单一职责的英文名称是Single Responsibility Principle,简称SRP,一个类只负责一个功能领域中相应职责,或者可以定义为:对一个类而言,应该只有一个引起它变化的原因。
单一职责原则告诉我们:一个类不能太“累”!在软件系统中,一个类(大到模块,小到方法)承担的职责越多,它被复用的可能性就越小,而且一个类承担的职责过多,就相当于将这些职责耦合在一起,当其中一个职责变化时,可能会影响其他职责的运作,因此要将这些职责进行分离,将不同的职责封装在不同的类中,即将不同的变化原因封装在不同的类中,如果多个职责总是同时发生改变则可将它们封装在同一类中。
单一职责原则的好处:
1. 类的复杂度降低,实现什么职责都有清晰明确的定义
2. 可读性提高,复杂性降低
3. 可维护性提高
4. 降低变更引起的风险,变更是必不可少的,如果接口的单一职责做得好,一个接口修改只对相应的实现类有影响,对其他接口无影响,这对系统的维护行和扩展性都有非常大的帮助。
比如我经常看到一些Android开发在Activity中写Bean文件,网络数据处理,如果有列表的话Adapter 也写在Activity中,问他们为什么除了好找也没啥理由了,把他们拆分到其他类岂不是更好找,如果Activity过于臃肿行数过多,显然不是好事,如果我们要修改Bean文件,网络处理和Adapter都需要上这个Activity来修改,就会导致引起这个Activity变化的原因太多,我们在版本维护时也会比较头疼。
也就严重违背了定义“就一个类而言,应该仅有一个引起它变化的原因”。
图片来源于网络
网友评论