单一职责原则
一:单一职责原则的由来
单一职责原则(Single Responsibility Principle,SRP)是Bob大爷提出来的。
二:单一职责原则的定义
there should never be more than one reason for a class to change. (就一个类而言,应该有且只有一个原因引起他的变化)。
三:单一职责的例子
例如打电话的例子
可以发现IPhone这个借口不只有一个职责,他包含两个职责:一个协议管理,一个数据传输。dial()和hangup()两个方法实现的是协议管理,分别负责拨号和挂机;
chat()实现的是数据传输。可以发现协议接通的变化和数据传输(通话,上网...)都会引起类的变化。这时我们可以将其拆分成两个接口,每个接口职责分明。
四:我的理解
在创建一个类或接口时要考虑引起这个类变化的原因,如果有多个要拆分。比如,类A有方法b,c(分别代表不同的职责),类B要用到类A的方法b,类C要用到类A的方法c,如果类B要用A的b方法,而不需要c方法,他也会把c方法的引用全部添加进来,可能造成类B的性能减低,如果类C变化需要修改A,就会重新编译A的b方法,可能会造成不可预见的错误。不同的情形,职责和变化的原因都不同。接口一定要做到单一职责,类的设计尽量做到只有一个原因引起变化。
评论