单一职责原则
一个对象只应该包含单一的职责,并且该职责被完整的封装在一个类里。
另一种定义为:就一个类而言,一个类应该仅有一个引起变化的原因。
分析
一个类承担的职责越多,其被复用的可能性越小。如果一个类承担的职责过多,就会造成职责之间的耦合,当其中一个变化时,可能会影响其他职责的运作。
类的职责主要包括两个方面:数据职责和行为职责,数据职责通过属性来体现,行为职责通过方法来体现。
开闭原则
一个软件实体应当对扩展开发,对修改关闭,即在不修改源代码的情况下改变其行为。
分析
抽象化是开闭原则的关键。
开闭原则可以通过一个更加具体的对可比性封装原则来描述,即将系统中具有可比性的元素封装起来。
依赖倒转原则
高层模块不应该依赖于低层模块,而都依赖抽象。抽象不应该依赖于细节,细节应该依赖于抽象。
针对接口编程,而不是针对实现编程。
分析
依赖倒转的常用实现方式之一是在代码中使用抽象类,将具体实现放在配置文件(元数据)中。
接口隔离原则
客户端不应该依赖那些它不需要的接口。
如果一个接口太大,那么应该切成许多小的接口。
合成复用原则
通过组合来实现代码复用,而不是通过继承来实现代码复用
迪米特法则
应该软件实体应当尽可能少的与其他实体发生相互作用
分析
在狭义的迪米特法则中,如果两个类之间不必直接通信,那么这两个类就不应当发生直接的相互作用,而是通过第三个类进行转发。