单一职责原则(Single Responsibility Principle)
一个类只负责一个功能领域的职责;换句话说,就一个类而言,应该只有一个引起它变化的原因。
开闭原则(Open-Closed Principle)
软件实体应该对扩展开放,对修改关闭。
里氏代换原则(Liskov Substitution Principle)
所有引用基类(父类)的地方必需能够透明地使用子类对象。
依赖倒置原则(Dependency Inversion Principle)
抽象不依赖于细节,细节依赖于抽象,针对接口编程。
接口隔离原则(Interface Segregation Principle)
使用多个专门的接口,而不是使用功能复杂的单一接口。
合成复用原则(Composite Resuse Principle)
一个类只负责一个功能领域的职责;换句话说,就一个类而言,应该只有一个引起它变化的原因。
开闭原则(Open-Closed Principle)
软件实体应该对扩展开放,对修改关闭。
里氏代换原则(Liskov Substitution Principle)
所有引用基类(父类)的地方必需能够透明地使用子类对象。
依赖倒置原则(Dependency Inversion Principle)
抽象不依赖于细节,细节依赖于抽象,针对接口编程。
接口隔离原则(Interface Segregation Principle)
使用多个专门的接口,而不是使用功能复杂的单一接口。
合成复用原则(Composite Resuse Principle)
又称为组合/聚合复用原则(Composition/Aggregate Reuse Pinciple),尽量使用对象组合,而不是继承来达到复用的目的。
图中的每一条维度各代表一项原则,我们依据对这项原则的遵守程度在维度上画一个点,则如果对这项原则遵守的合理的话,这个点应该落在红色的同心圆内部;如果遵守的差,点将会在小圆内部;如果过度遵守,点将会落在大圆外部。一个良好的设计体现在图中,应该是六个顶点都在同心圆中的六边形。
在上图中,设计1、设计2属于良好的设计,他们对六项原则的遵守程度都在合理的范围内;设计3、设计4设计虽然有些不足,但也基本可以接受;设计5则严重不足,对各项原则都没有很好的遵守;而设计6则遵守过渡了,设计5和设计6都是迫切需要重构的设计。