如何不违反单一职责原则?

问题描述 投票:0回答:1

我是新来的编程和我学习设计的东西。

我被教导说,SRP使得每个类应该有一个责任是超级重要。因此,我想继承其他类的责任。但后来,我意识到Java不允许多重继承,但只有接口。我认为实现多个接口的问题是,你必须编写反正实现的接口的一个类中的方法。所以,你必须去实现修复方法接口的类。那么是不是就认为违反SRP?

总之,我希望有一个A类,说狗,是构建一个事情,需要方法B(树皮),C(吃)和d(睡眠)有关A.我该怎么做,没有违反SRP?

inheritance interface single-responsibility-principle
1个回答
0
投票

SRP通常表述为“每类应该有一个责任,”但是这是不准确的。一个更好的说法是,“一个模块应该有一个且只有一个理由去改变。”正如我在Single Responsibility Principle: Is It a Fundamental Mistake?形容我能想到的变化的两个可能的轴:

  1. 企业变革
  2. 技术变革

为了降低企业变更为“一个理由去改变”是指应该只有一个人谁问你改变一个特定的模块业务。例如,一些谁可能会要求改变的人都是产品设计的头部的头,。因此,这意味着我们要分开的事情,从它的外观如何表现。

技术变革的一个例子是改变的事情是如何存储。 “我们需要从一个SQL数据库平的NoSQL存储改变。”

所以它做什么,它的外观,基础设施这取决于 - 这些是应该分开的东西。不是你的狗。接口隔离原则导致的接口薄片,像咆哮和饮食。这使呼叫者可以依靠,而不是像动物一些巨大的接口,有很多事情不需要对这些薄片。

所以我说

class Dog: Barking & Eating & Sleeping

不一定违反SRP,特别是当每一个接口是薄。

这就是说,我见过的人就打无关接口共同创造的怪物。这主要是懒洋洋地使用现有的类作为倾销地的结果。只要你不断地问,“这能分开吗?”并查看是否可以提取的责任,你做的比大多数人好。

© www.soinside.com 2019 - 2024. All rights reserved.