java设计模式之六大设计原则

2017-12-31  本文已影响0人  franky_hu

一、单一职责原则

什么是单一职责原则呢?--应该有且仅有一个原因引起类的变更。

there should never be more than one reason for a class to change.

举例:【来自设计模式之禅】

IPhone:
dial 【拨号】
chat【通话】
handup【结束】

上面是一个正常的通话接口:拨号、通话、结束

但是你会发现能够引起这个变化的有两个,一个是操作:拨号,挂电话,还有一个就是通信,所以修改如下:

IconnectManager【interface】
void dial
void hangup
ITransferData 【interface】
void chat

然后用两个类去实现它

class ConnectManager
class TransferData

这样又太过于繁琐,因为打电话这一个动作phone 必须需要上面两个同时实现,就是一个手机类需要把ConnectionManager和DataTransfer组合在一起才可以使用。组合是一种强耦合,你和我有共同的生命周期,所以下面这种设计才是完美的。
所以下面这种设计才是简介而通用:【phone类同时实现他们两个接口,吧两个职责融合在一个类中】

class phone implement ITransferData,IConnectMamager

总结单一职责的好处:

单一职责适用于接口,类和方法。但是现实中由于成本,工期等众多因素,类的设计很难实现单一职责。所以对于单一职责的建议是:接口一定要做到单一职责,类的设计尽量做到单一职责。

上一篇下一篇

猜你喜欢

热点阅读