学习设计模式 - 六大基本原则之单一职责原则

 

  设计模式总共有六大基本原则,统称为SOLID (稳定)原则,分别是S-单一职责原则(Single Responsibility Principle), O-开闭原则(Open closed Principle),L-里氏替换原则(Liskov Substitution Principle),L-迪米特法则(Law of Demeter),I-接口隔离原则(Interface Segregation Principle),D-依赖倒置原则(Dependence Invension Principle)。

 


 

S-单一职责原则(Single Responsibility Principle)

 一、定义

  应该有且仅有一个原因引起类的变更。(There should never be more than one reason for a class to change.)

 

二、理解

  一个接口或类只有一个职责,它只负责干一件事,也就是只有一个原因引起它的变化。单一职责原则提出了一个编写代码的标准,用"职责"或"变化原因"来判断一个接口或类是否设计优良,但"职责"和“变化原因”都是不可度量的,因项目而异,因环境而异。

  

 

  如上,图1-1的IUserInfo接口包含了多个职责,职责不分明,所以可拆分成用负责户属性和负责用户行为两个职责。职责分离,当有一天需要修改负责用户属性这个职责时,并不用担心影响到用户行为这个职责,这就是单一职责的好处。

 

三、优缺点

  优点:

  1. 单一职责,复杂性降低

  2. 可读性提高

  3. 可维护性提高

  4. 变更的风险降低,如果一个接口的单一职责做的好,修改接口只对相应的实现类有影响,对其他接口无影响,这对系统的

      扩展性和维护性都有非常大的帮助

 

  缺点:

  暂无

 

四、 注意事项

   单一职责原则提出了一个编写程序的标准,用“职责”或“变化原因”来衡量接口或类设计是否优良,但是“职责”和“变化原因”都是不可度量的,因项目而异,因环境而异。

  对于接口,我们在设计的时候一定要做到单一,但是对于实现类就需要多方面考虑了。生搬硬套单一职责原则会引起类的剧增,给维护带来非常多的麻烦,而且过分细分类的职责,会认为的增加系统的复杂性。本来一个类可以实现的行为硬要拆分成两个类,然后再使用聚合或组合的方式耦合再一起,人为制造了系统的复杂性。

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

 

 

学习资料:

《设计模式之禅》秦小波 著

  单一职责原则 

 

 

 

 

posted @ 2018-07-22 17:42  timfruit  阅读(306)  评论(0编辑  收藏  举报