开闭原则
Open-Closed Principle OCP
最基础的原则,对扩展开放,对修改关闭
强调的是 用抽象构建框架,用实现扩展细节 ,可以提高软件系统的可复用性和可维护性
依赖倒置原则
Dependence Inversion Principle, DIP
程序要依赖于抽象接口,不要依赖于具体实现。即面向接口编程
通过抽象,使得各个类或者模块不互相影响,实现松耦合,实际上就是依赖注入,而注入的方式有很多,构造器注入、setter注入都是
单一职责原则
Simple Responsibility Pinciple,SRP
一个类、接口、方法只做一件事情
接口隔离原则
Interface Segregation Principle, ISP
尽量保证接口的纯洁性,客户端不应该依赖不需要的接口。
迪米特法则(最少知道原则)
Law of Demeter LoD
Least Knowledge Principle,LKP
一个类对其所依赖的类知道得越少越好。
里氏替换原则
Liskov Substitution Principle,LSP
子类可以扩展父类的功能但不能改变父类原有的功能,也可以算是对开闭原则的体现和延伸。
合成复用原则
Composite/Aggregate Reuse Principle,CARP
尽量使用对象组合、聚合,而不使用继承关系达到代码复用的目的。
- 继承:白箱复用,将所有的实现细节暴露给子类
- 组合/聚合:黑箱复用,类以外的对象无法获取实现细节