- SRP (Single Responsibility Principle)单一职责
任何一个软件模块都应该只对某一类行为者负责。即根据不同的行为者划分不同的模块、组件;否则会出现:
1、会出现共享代码
2、代码合并冲突
- OCP (Open Closed Principle)开闭原则
设计良好的系统应该易于扩展、抗拒修改。其目标是让系统易于扩展、同时限制其每次修改所影响的范围。如果A影响了B,则B依赖于A。反之,A不能影响B,则A依赖于B。则有高阶组件不会因为低阶组件被修改受到影响。同时利用DIP可以实现对组件之间的依赖方向进行控制。开闭原则告诉我们需要对软件中的稳定组件与可修改组件进行控制。
- LSP (Liskov Substitution Principle ) 里氏替换原则
任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。里氏代换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。反例:正方形/长方形问题
- ISP(Interface Segregation Principle)接口隔离原则
客户端被强迫不应该依赖它不需要的接口。
- DIP(Dependence Inversion Principle)依赖反转原则
灵活的系统,在依赖关系中应该多引用抽象类型,而不是具体实现。但是严格执行是不现实的,如java中的String就是一个具体实现,但String是非常稳定的。一次DIP不应考虑稳定的平台、系统、接口,应该考虑到的是会经常变动的具体实现模块。