单一职责原则
|
|
分析
电话通话的时候有四个过程发生:拨号、通话、回应、挂机,如下所示:
下面是具体代码实现:
|
|
上面的代码看起来没有问题,但是单一职责原则要求一个接口或者类只有一个原因引起变化,也就是说一个接口或者类只有一个职责,它就负责一件事,上面的接口显然并不是只负责一件事情。
IPone这个接口可不只是有一个职责,它包含了两个职责:一个是协议管理,一个是数据送达。dial()和hangup()两个方法实现的是协议管理,分别负责拨号和挂机;chat()是实现数据送达。
下面分析上面存在的问题。第一,协议变化显然会造成接口或者类引起变化;第二,数据传送也会造成接口或者类引起变化。
分析发现,上面的接口包含了两个职责,而且两个职责互不影响,所以考虑拆分为两个接口。如下图所示:1// 代码描述
|
|
|
|
|
|