单一职责原则(Single Responsibility Principle,SRP)
单一职责原则是最简单的面对对象的原则,它用于控制类的粒度大小,它的定义如下:一个类只负责一个功能领域中的相应职责。或者可以定义为:对于一个类而言,应该只有一个引起它变化的原因。单一职责原则的核心思想是:一个类不能太“累”,尽量将不同职责封装在不同的类中。开闭原则(Open-Closed Principle,OCP)
开闭原则是面对对象的可复用设计的第一块基石,它是最重要的面向对象设计原则。开闭原则由Bertrand Meyer于1988年提出,其定义如下:一个软件实体应当对拓展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行拓展。里氏代换原则(Liskow Substiution Principle,LSP)
里氏代换原则由Jeannette Wing教授于1994年提出,原定义比较难理解,因此一般使用它的通俗的定义:所有引用基类(父类)的地方必须能透明地使用其子类对象。里氏代换原则表明,在软件中将一个基类替换成它的子类对象,程序将不会产生任何错误和异常,反过来则不成立。
依赖倒转原则(Dependency Inversion Principle,DIP)
依赖倒转原则是由Robert C.Martin在他的专栏提出的,其定义如下:抽象不应该依赖于细节,细节应当依赖于抽象。换言之,要针对接口编程,而不是针对实现编程。接口隔离原则(Interface Segregation Principle,ISP)
接口隔离原则用的比较少,它的定义如下:使用多个专门的接口,而不使用单一的总接口,及客户端不应该依赖那些它不需要的接口。合成复用原则(Composite Resue Principle,CRP)
合成复用原则又称组合/聚合原则,它的定义如下:尽量使用对象组合,而不是继承来达到复用的目的。迪米特法则(Law of Demeter,LoD
又称为最少知识原则,用个人感觉用的也不多,一个软件实体应当尽可能少的与其他实体发生相互作用。在大多数情况下开闭原则、里氏代换原则、依赖倒转原则会同时出现,开闭原则是目标,里氏代换原则是基础,依赖倒转原则是手段,它们相辅相成,相互补充,目标一致,只是分析问题时所站的角度不同而已。