单一职责原则

2017-10-07  本文已影响14人  KUN叔

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

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

原则分析

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

实践

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

UserInfo类图

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

UserInfo职责划分后的类图

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

优点:

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

注意:

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

建议:

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

上一篇下一篇

猜你喜欢

热点阅读