设计模式有六大原则,分别是:
- 单一职责原则;
- 里氏替换原则;
- 依赖倒置原则;
- 接口隔离原则;
- 迪米特法则;
- 开闭原则;
一、单一职责原则(Single Responsibility Principle [SRP])
定义:有且只要一个原因引起类的更变。
使用场景:如果一个接口业务过于庞大复杂,则可以将这个接口分离成几个小接口,每个接口负责的方法功能相近。
单一职责原则要求:接口一定要做到单一职责,类的设计尽量做到只有一个原因引起变化。
单一职责原则优点:
- 降低类的复杂性,实现什么职责都有清晰明确的定义;
- 可读性高,利于维护;.
- 变更引起的风险降低;
二、里氏替换原则(Liskov Substitution Principle [LSP])
定义:
- 如果对每一个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1都有代换陈o2时,程序P的行为都没有发生变化,那么类型S是类型T的子类型;
- 使用父类的地方。替换成子类也不会产生任何错误或者异常,使用者根本就不需要知道是父类还是之类。
里氏替换原则为良好的继承定义了规范: - 之类必须完成实现父类的方法;
- 之类可以有自己的功能;
- 之类覆盖或者实现父类的方法可以使用比父类更加宽泛的参数类型;
- 之类覆盖或者实现父类的方法可以定义返回类型的范围可以小于父类方法返回类型的范围;
三、依赖倒置原则(Dependence Inversion Principle[DIP])
定义:细节依赖抽象,抽象不应该依赖细节,高层模块不应该依赖底层模块,两者应该依赖抽象。
依赖倒置原则表面模块间的依赖通过抽象发生,实现类之间不发生直接依赖关系,其依赖关系是通过接口或者抽象类产生。抽象类或者接口不应该依赖于实现类,实现类依赖接口或者抽象类。
依赖倒置原则有点:减少类间的耦合性,提高系统的稳定性,降低并行开发引起的风险,提高代码的可读性和可维护性。
四、接口隔离原则
接口隔离原则定义:
- 客户端不应该依赖它不需要的接口;
- 类间的依赖关系应该建立在最小的接口上。
接口隔离原则要求建立接口应该尽量细化,接口中的方法应该尽量少。
接口隔离原则是对接口进行约束,它包含以下内容: - 接口尽量要小,要满足单一职责原则;
- 接口要高内聚;
- 定制服务;
- 接口设计是有限度。
实践要求: - 一个接口服务一个模块或者业务;
- 压缩接口中的public方法;
- 了解环境,拒绝盲从。
五、迪米特法则(Least Knowlege Principle [LKP])
定义:一个类应该对自己需要耦合或者调用的类知道的最少。
迪米特法则的核心是类间解耦,弱耦合,只有若耦合类的复用率才可以提高。
六、开闭原则
定义:一个类或者模块和函数应该对扩展来实现变化,对修改关闭。
开闭原则优点:
- 提高类的复用率;
- 提高代码的维护性;
实践要求: - 抽象约束;
- 元数据控制模块行为;
- 封装变化;