单一职责原则 (Single Responsibility Principle)
定义: 就一个类而言,应该仅有一个引起它变化的原因(通俗说:一个类只负责一项职责)
为什么需要单一职责呢?如果一个类承担的职责过多,就等于把这些职责耦合在一起了,一个职责的变化可能会引起其它职责的变化,当变化发生时,设计会遭到意想不到的变化。
- 如下图:Member 类有俩方法,一个是获取会员等级 getLevel() ,一个是计算会员折扣 discount(),Order 类要调用 getLevel() 和 discount() 方法,User 类要只调用 discount() 方法;
这个设计违反类 SRP ,如果其中一个使用类的改变导致 Member 改变,这样会导致其它使用类也需要变更、测试、部署等问题。 - 正确的方式如下:将原来的 Member 类拆分两个职责类,如下图:
但是,如果类的变化总是导致这两个职责的同时变化,那么就不必分离它们,实际上,分离它们可能会导致复杂性增加。