单一职责原则是什么
对类来说,即一个类应该只负责一项职责,如类A负责两个不同的职责:职责1、职责2。当职责1需求变更而改变类A时,可能造成职责2执行错误,所以需要将类A的粒度分解为A1、A2。
优势:
- 降低类的复杂度,一个类只负责一项职责。
- 提高类的可读性、可维护性。
- 降低变更引起的风险。
注意事项:
单一职责同样也适用于方法。一个方法应该尽可能做好一件事情。如果一个方法处理的事情太多,其颗粒度会变得很粗,不利于重用。
UML类图

在设计模式的体现
策略模式
策略模式讲的是,如果有一组算法,那么就将每一个算法封装起来,使得它们可以互换。
显然,策略模式就是从对可变性的封装原则出发,只负责单一职责,如下图所示:
在采用策略模式之前,架构师必须从单一原则出发,考虑系统是否有可能在将来引入新的折扣算法。如果确有可能,那么就应当将所有的折扣算法封装起来,因为它们是可变化的因素。系统必须能够在新的算法出现时,很方便地将新的算法插入到已有的系统中,而不必修改已有的系统。
为了使这些算法成为“即插即用(Pluggable)”的对象,必须使这些算法能够相互替换。而做到这一点的关键,就是给这些对象定义出相同的接口,也就需要有一个抽象策略角色作为这些对象所组成的等级结构的超类型。