依赖倒置原则(DIP)
高层模块(稳定)不应该依赖于底层模块(变化),二者都应该依赖于抽象(稳定)。
抽象(稳定)不应该依赖于实现(变化),实现应该依赖于抽象(稳定)
开闭原则(OCP)
对扩展开发,对修改关闭
类模块应该是可以扩展的,但是是不可以修改的。
单一职责原则(SRP)
一个类也应该仅有一个引起它变化的原因,变化的方向隐含着类的责任。即一个类只负责一个功能。
里氏替换原则(LSP)
子类能够替换基类,继承表达类型抽象。
接口隔离原则(ISP)
客户端不应该依赖它不需要的接口。一个类对另一个类的依赖应该建立在最小的接口上。
合成复用原则
类继承通常为“白箱复用”,对象组合则是“黑箱复用”。
继承在某种程度上破坏了封装,子类与基类耦合度高
将已有的对象纳入新对象中,作为新对象的成员对象来实现的,新对象可以调用已有对象的功能,从而达到复用。只要求被组合的对象具有良好定义的接口,耦合度低。
迪米特法则
只与你的直接朋友交谈,不跟“陌生人”说话(Talk only to your immediate friends and not to strangers)。其含义是:如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用。其目的是降低类之间的耦合度,提高模块的相对独立性。