设计模式——7大设计原则

 一.七大设计原则

     Single Responsibility Principle                 : 单一职责原则(SRP)

     Open Closed Principle                                : 开闭原则(OCP)

     Liskov Substitution Principle                      : 里氏替换原则(LSP)

     Dependence Inversion Principle                 : 依赖倒置原则(DIP)

     Interface Segregation Principle                  : 接口隔离原则(ISP)

     Law of Demeter                                          : 迪米特法则(LOD)(也叫最少知识原则LKP)

     Composite/Aggregation Reuse Principle   : 合成/聚合复用原则(CARP)

二.对于各原则理解

   1.单一职责原则:

     概念:就一个类而言,应该仅有一个引起它变化的原因。

理解:软件设计就是发现职责并把职责相互分离,明确类的职责,一个类应只具有唯一职责。如果一个类职责过多,会产生职责耦合,当一个职责变化可能会影响其他,从而出现意外。单个类负责太多的功能实现,会导致类难以维护,也不容易了解该类的主要功能,最后可能让整个项目过度依赖这个类,使得项目或这个类失去弹性。

   2.开放—封闭原则:

     概念:软件实体应该可以扩展,但是不可修改。

理解:对于扩展是开放的,对于更改是封闭的。面对需求对于程序的修改时通过增加新的代码实现,而不是更改现有的代码。这就需要先猜测出最有可能发生变化的种类,然后构造抽象来隔离那些变化,即对程序中呈现出频繁变化的那些部分做出抽象,利用抽象应对变化。系统分析时就要朝向“功能接口化”的方向进行设计,将系统功能的“操作方法”向上提升,抽象化为”接口“,将“功能的实现”向下移动子类中。因此,在面对增加系统功能需求时,就可以使用“增加子类”的方式来满足。

   3.里氏替换原则:

     概念:子类型必须能够替换掉他们的父类型。

理解:程序中子类可以替换父类,并且不影响程序运行。父类能够被子类复用,而且子类可以在父类的基础上增加新的行为。正是由于子类型的可替换行才使得父类型的模块在无需修改情况下就可以扩展。父类中一定包含了可被子类重新实现的方法,而客户端使用的操作接口也是由父类来定义的,使用哪个子类的对象来替代父类对象,则由类本身的对象产生机制来决定,客户端不应该知道。

   4.依赖倒置原则:

     概念:A.高层模块不应该依赖于底层模块。两个都应该依赖抽象。B.抽象不应该依赖细节,细节应该依赖抽象。

理解:针对接口(抽象)编程,不要对实现(细节)编程。高层模块和低层模块都要依赖与抽象,即接口或抽象类。

   5.接口隔离原则:

     概念:使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不要的接口。

理解:尽量使用专门的接口,外界用到哪个调用哪个就好,不要把所有接口糅合在一起。

   6.迪米特法则:

     概念:如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果一个类需要调用另外一个类的某一个方法的话,可以通过第三者转发这个调用。

理解:强调了类之间的松耦合,类之间耦合越弱越有利于复用。一个处在弱耦合的类被修改,不会对有关系的类造成波及。

   7.合成/聚合复用原则:

     概念:尽量使用合成/聚合,尽量不要使用类继承。

理解:优先使用合成/聚合,可以避免由于类继承带来的系统过于复杂庞大。

你可能感兴趣的:(设计模式)