标签:高内聚 tps The 业务 follow 持久 面向对象 描述 代理
首先是定义单一职责原则:一个类应该只有一个发生变化的原因
英文名叫Single Responsibility Principle,以下简称为SRP
下面我们从三本著作中去解读这个单一职责
这三本著作分别是《深入浅出面向对象分析与设计》、《设计模式解析》和《敏捷开发:原则、模式与实践》。
深入浅出面向对象分析与设计
首先他对SRP的解读稍有不同:
单一职责原则:系统里的每一个对象应该具有单一职责,所有对象的服务都应该聚焦在实现该职责上。
且他认为
内聚性是SRP的另一个名称。如果你的类是高内聚的,就表示你在正确的使用SRP。
为什么要强调他这里说的内聚性呢?因为在《敏捷》书中,他认为如果类的接口不是内聚的,那么就违反了接口隔离原则
(在百度百科里,他认为单一职责是基于内聚性提出的。图如下)
在最后他提出了一个判断是否是单一职责的办法:
写下一个式子:
the itself,其中第一个单词写类名,第二个单词写方法名,如果有参数的话在方法后跟上参数
我们举这样一个例子,调制调解器,就是光猫,可以拨号挂断,发数据和接收数据。
用《深入浅出》里的方法这个符合单一职责模式。但是在《敏捷》里就不符合了,这里在后面讲。
下面来看《设计模式解析》
设计模式解析
他将对象看做是具有责任的东西。每个对象包含一组职责,这个在之前如何理解一个类——单一职责原则中已经说了很多,这里不再赘述
最后一个是要将《敏捷》书
敏捷开发:原则、模式与实践
书中也说了来自于内聚性,但是在他的理解里,上述光猫的例子是违反SRP的。
他认为拨号和挂断属于连接管理,接受和发送属于数据通信。
我们把前者认为是A职责,后者是B职责,这两种职责是否应该被分开取决于两者是否经常同时变化。
如果在A职责出现变动时,B职责也要同时变动,那么两个可以不用分开,否则的话就需要被分开。
标签:高内聚 tps The 业务 follow 持久 面向对象 描述 代理
原文地址:http://blog.51cto.com/13985113/2311418