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

认识单一职责原则

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

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

单一职责原则由来

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

单一职责原则的好处

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

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

项目中分析单一职责原则

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

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

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

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

常言道

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

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...