理解“单一职责原则”难点应该在:
如何定义一个类职责?
划定这个类职责的原则是什么?
单一职责原则解决的是什么问题?
单一职责原则是在解决内聚性的问题。
每一个职责都是变化的轴线。当一个类承担多个职责时就会有多个引起它变化的原因。所以就一个类而言,应该仅有一个引起它变化的原因。
在SRP中,把职责定义为“变化的原因”。如果你能想到多于一个动机去改变一个类,那么这个类就是具有多个职责。
在《敏捷软件开发原则、模式与实战》中还有一个推论,“变化的轴线仅当实际发生时才具有真正的意义。如果没有征兆,那么去应用SRP,或者任何其他的原则都是不明智的”。对于这句话的理解是变化需要建立在需求的变更只上。没有真实的需求强制的分离,也许本身就是不明智的。
在本章结论处有一句话:软件设计真正要做的很多内容,就是发现职责并把职责相互分离。 也道出了软件设计的一个现实情况,没有一开始就完美设计的代码,也没有不变的需求。
网友评论