单一职责原则
应该有且仅有一个原因引起类的变更。
就一个类而言,应该仅有一个引起它变化的原因。
如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。
优点:
- 类的复杂性降低,实现什么职责都有清晰明确的定义;
- 可读性提高,复杂性减低,可读性当然提高;
- 可维护性提高,可读性提高,可维护性当然提高;
- 变更引起的风险减低,变更是必不可少的,如果接口的单一职责做得好,一个接口修改只对相应的类有影响,对其他接口无影响,这对系统的扩展性、维护性都有非常大的帮助。
缺点:
使类或接口的数目增加, 难以控制。
总结:
- 实际情况是,很多时候我们无法提前预见“引起变化的原因”,所以我们只能凭经验构造我们的接口,尽量做到一个接口只有一个职责。这里说的是接口,类可能会有继承和实现多个接口,更加难以实现单一职责。
- 当以前写的类已经有多个引起变化的原因时,我们最好做代码重构。