单一职责原则

单一职责原则(Single Responsibility Principle,SRP):

是指一个类或者模块应该有且只有一个改变的原因。(高内聚,低耦合)

原则分析

一个类(或者大到模块,小到方法)承担的职责越多,它被复用的可能性就越小,而且如果一个类承担的职责过多,就相当于将这些职责耦合在一起,当一个职责变化时,可能影响其他职责的运作。

实践

首先来看一下一个用户管理类UML

UserInfo类图

这个设计的问题是用户的属性和用户的行为没有分开,应该把用户的信息抽取成一个BO(Business Object, 业务对象),把行为抽取成一个Biz(Business Logic, 业务逻辑)按照这个思路对类图进行修正。

UserInfo职责划分后的类图

重新拆分成两个接口,IUserBO负责用户的属性,就是收集和反馈用户的属性信息;IUserBiz负责用户的行为,完成用户信息的维护和变更。

优点:

1、降低类的复杂性,类的职责清晰明确。比如数据职责和行为职责清晰明确。
2、提高类的可读性和维护性。
3、变更引起的风险减低,变更是必不可少的,如果接口的单一职责做得好,一个接口修改只对相应的类有影响,对其他接口无影响,这对系统的扩展性、维护性都有非常大的帮助。

注意:

单一职责原则提出了一个编写程序的标准,用“职责”或“变化原因”来衡量接口或类设计得是否合理,但是“职责”和“变化原因”都是没有具体标准的,一个类到底要负责那些职责?这些职责怎么细化?细化后是否都要有一个接口或类?这些都需从实际的情况考虑。因项目而异,因环境而异。

建议:

接口一定要做到单一职责,类的设计尽量做到只有一个原因引起变化。

推荐阅读更多精彩内容

  • 定义:应该有且仅有一个原因引起类的变更。 英文名称:Single Responsibility Principle...
    大海孤了岛阅读 198评论 0 0
  • 单一职责原则(Single Responsibility Principle,SRP): 类的职责要单一,不能将太...
    践行者阅读 797评论 2 5
  • 单一职责原则(Single Responsibility Principle,简称SRP)类的职责要单一,不能将太...
    未来々人生阅读 462评论 0 0
  • 一个人心无旁骛的做一件事的时候非常让人敬佩,那是一种静谧的力量,像是进入了禅定。 心念宁静,气度自来。 静是一种力...
    郑茗月阅读 208评论 2 2
  • 不知道从什么时候时候开始,我成了离别的背景。 我在原地,看着你跟我从陌生,到相识,到熟悉,再到分别。我看着你满心期...
    xlslh7阅读 36评论 0 0