单一职责原则
单一职责原则,又称Single responsibility principle,SRP。
望文生义的理解
一个模块只干一件事。
“一个模块只干一件事”的确是重要的软件设计思想,但它其实是“高内聚、低耦合”的通俗解释,是从模块自身考虑怎么去组合的设计思想。
将变化纳入考量
Robert Martin 在《敏捷软件开发:原则、实践与模式》中,对单一职责原则的定义:
就一个类而言,应该仅有一个引起它变化的原因。
职责是什么?
在SRP中,我们把职责定义为“变化的原因”。如果你能想到多于一个动机去改变一个类,那么这个类就具有多于一个的职责。
为什么要分离职责?
软件设计是一门关注长期变化的学问,一个模块最理想的状态是不改变,其次是少改变,它可以成为一个模块设计好坏的衡量标准。
每一个职责都是变化的一个轴线。当需求变化时,该变化会反应为类的职责的变化。如果一个类承担了多于一个的职责,那么引起它变化的原因就有多个。
如果一个类承担的职责过多,就等于把这些职责耦合在了一起。一个职责的变化可能会削弱或抑制类完成其他职责的能力。
将变化的来源纳入考量
Robert Martin 在《架构整洁之道》中重新定义了单一职责原则:
任何一个软件模块,都应该只对某一类行为者负责。
行为者是什么?
在现实环境中,软件系统为了满足“用户”和“所有者”的要求,必然要做出这样或那样的修改。而该系统的用户或者所有者,就是设计原则中所指出的“被修改的原因”。
因而单一职责原则又可以被描述为

本文深入探讨了设计模式中的单一职责原则,解释了SRP的含义,强调了类应仅有一个引起变化的原因。文章通过实例展示了如何将职责分离以降低耦合,提高模块稳定性。同时,结合康威定律,讨论了如何根据组织结构来设计符合单一职责原则的软件模块。
最低0.47元/天 解锁文章
469

被折叠的 条评论
为什么被折叠?



