解读设计模式--单一职责原则

来源:互联网 发布:手机淘宝店铺招牌素材 编辑:程序博客网 时间:2024/04/30 09:02

认识单一职责原则

         单一职责原则是面向对象设计中最重要的原则之一,而面向对象最基础的东西就是类和对象的使用,而单一职责可以说是对类和对象的一种要求,也就是要求类应该有且仅有一个引起它变化的原因。

      开闭原则是指一个类,只有一个引起它变化的原因。有且只有一个职责。每一个职责都是变化的一个轴线,如果一个类有一个以上的职责,这些职责就耦合在了一起。这会导致脆弱的设计。当一个职责发生变化时,可能会影响其它的职责。另外,多个职责耦合在一起,会影响复用性。

 

单一职责原则由来

         谈到单一职责原则的由来不得不说面向对象,也不得不说需求是在不断变化,因为软件需求唯一的不变的真理就是软件需求一定会变化,因为需求变化,所以我们就要用到面向对象的设计思想,而面向对象的要求就是复用、能用最小的代价应对变化、不用改变现有代码就能满足扩展(其实这就上一篇博客中说的《开闭原则》)。在面向对象的要求下,许多人在这些问题上思考了很多,也花费了很大努力来实现这几点,所以单一职责原则就在这样的背景下诞生了。

 

单一职责原则的好处

      ① 单一职责原则提供了一个编写程序的标准,也就是让类的复杂性降低,实现什么职责都有清晰明确的定义

      ② 在可读性和可维护性上得到了提高,因为类的职责单一,对类的阅读,类之间的调用关系都是清晰明确的。

 

项目中分析单一职责原则

         在这里引用一个比较经典的例子,就是图形计算程序和图形绘制程序调用Area()方法和Draw()方法的例子。    

      例子出处《开篇-模式和原则》:

clip_image002

     

      图形计算程序只使用了正方形的Area()方法,永远没有使用Draw()方法,而它却和draw方法关联起来,这就违反了单一指责原则,如果将来有一天图形绘制程序导致draw发生变化,那就影响到了本来毫无关系的图形计算程序。

      所以我们应该将不同的职责分配给不同的类,让每个类的职责单一,隔离变化,如图:

 

clip_image004

常言道

      常言道:该你管的你管,不该你管的你别插手。