There should never be more than one reason for a class to change.
1. 定义职责单一的接口。
2. 定义类实现相关接口。
3. 因为基于面向对象的思想, 我们对外公布的是接口而不是实现类,因此实现多个接口的类,虽然实际上会因为不同职责的接口变化而引起变化,就权当作它并不违背单一职责原则。
4. 单一职责原则也适用于方法。 比如之前ePoster项目中的为LED提供的API中:
getColor()
setColor(color)
getState()
setState(on)
以上4个是符合单一职责原则的。
但是最初提供的setState(on, color)则并不是一个好的写法。 该方法的职责不清晰,不单一。
真正完全基于单一职责原则进行类的设计,不太现实。 但是要做到接口的单一职责。