我是新来的编程和我学习设计的东西。
我被教导说,SRP使得每个类应该有一个责任是超级重要。因此,我想继承其他类的责任。但后来,我意识到Java不允许多重继承,但只有接口。我认为实现多个接口的问题是,你必须编写反正实现的接口的一个类中的方法。所以,你必须去实现修复方法接口的类。那么是不是就认为违反SRP?
总之,我希望有一个A类,说狗,是构建一个事情,需要方法B(树皮),C(吃)和d(睡眠)有关A.我该怎么做,没有违反SRP?
SRP通常表述为“每类应该有一个责任,”但是这是不准确的。一个更好的说法是,“一个模块应该有一个且只有一个理由去改变。”正如我在Single Responsibility Principle: Is It a Fundamental Mistake?形容我能想到的变化的两个可能的轴:
为了降低企业变更为“一个理由去改变”是指应该只有一个人谁问你改变一个特定的模块业务。例如,一些谁可能会要求改变的人都是产品设计的头部的头,。因此,这意味着我们要分开的事情,从它的外观如何表现。
技术变革的一个例子是改变的事情是如何存储。 “我们需要从一个SQL数据库平的NoSQL存储改变。”
所以它做什么,它的外观,基础设施这取决于 - 这些是应该分开的东西。不是你的狗。接口隔离原则导致的接口薄片,像咆哮和饮食。这使呼叫者可以依靠,而不是像动物一些巨大的接口,有很多事情不需要对这些薄片。
所以我说
class Dog: Barking & Eating & Sleeping
不一定违反SRP,特别是当每一个接口是薄。
这就是说,我见过的人就打无关接口共同创造的怪物。这主要是懒洋洋地使用现有的类作为倾销地的结果。只要你不断地问,“这能分开吗?”并查看是否可以提取的责任,你做的比大多数人好。