设计模式之(一):六大原则 + 模式分类介绍

一.设计模式中的六大设计原则

 总原则:开闭原则(Open Close Principle)

    1.一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。

    2.即每次发生变化时,要通过添加新的代码来增强现有类型的行为,而不是修改原有的代码;

    3.符合开放封闭原则的最好方式是提供一个固有的接口,然后让所有可能发生变化的类实现该接口,让固定的接口与相关对象进行交互。


1.单一职责原则(Single Responsibility Principle)

    1.单一职责原则的英文名称是Single Responsibility Principle,简称是SRP。There should never be more than one reason for a class to change.

    2.不要存在多于一个导致类变更的原因,也就是说每个类应该实现单一的职责,如若不然,就应该把类拆分。

2.里式替换原则(Liskov Substitution Principle)

     1.定义

      (1).如果对每一个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1都代换成o2时,程序P的行为没有发生变化,那么类型S是类型T的子类型。

      (2).所有引用基类的地方必须能透明地使用其子类的对象。

    2.在软件开发过程中,子类替换父类后,程序的行为是一样的;只有当子类替换掉父类后软件的功能不受影响时,父类才能真正地被复用,而子类也可以在父类的基础上添加新的行为。

3.依赖倒置原则(Dependence Inversion Principle)

     1.高层模块不应该依赖低层模块,两者都应该依赖其抽象;

    2.抽象不应该依赖细节;

    3.细节应该依赖抽象;

4.接口隔离原则(Interface Segregation Principle)

     1.客户端不应该依赖它不需要的接口;

     2.类间的依赖关系应该建立在最小的接口上;

     3.不要让一个单一的接口承担过多的职责,而应把每个职责分离到多个专门的接口中,进行接口分离。

5.迪米特法则(Demeter Principle)

     迪米特法则(Law of Demeter,LoD)也称为最少知识原则(Least Knowledge Principle,LKP),虽然名字不同,但描述的是同一个规则:一个对象应该对其他对象有最少的了解。通俗地讲,一个类应该对自己需要耦合或调用的类知道得最少,你(被耦合或调用的类)的内部是如何复杂都和我没关系,那是你的事情,我就知道你提供的这么多public方法,我就调用这么多,其他的我一概不关心。

6.合成复用原则(Composite Reuse Principle)

     原则是尽量首先使用合成/聚合的方式,而不是使用继承。


二.设计模式分类

1.创建型

    (1).本质:创建对象的模式,对类的创建进行了抽象。

    (2).特点:a.封装了具体类的信息;b.隐藏了类的实例化过程;

   (3).模式列举(5种):工厂方法(Factory method)、抽象工厂模式(Abstract Factory)、单例模式(Singleton)、建造者模式(Builder)、原型模式(Prototype)。

2.结构型

    (1).本质:处理类或者对象集合。

    (2).类型:a.类结构型:采用继承机制来组合接口实现;

              b.对象结构型:组合对象的方式实现新功能;

    (3).模式列举(7种):适配器模式(Adapter)、桥梁模式(Bridge)、装饰模式(Decorator)、门面模式(Facade)、组合模式(Composite)、享元模式(Flyweight)、代理模式(Proxy)。

3.行为型

    (1).本质:不同对象间划分责任和算法的抽象化。

    (2).类型:a.类行为模式:使用继承关系在类之间分配行为;

              b.对象行为模式:使用对象聚合的方式分配行为;

    (3).模式列举(11种):模板方法模式(Template Method)、命令模式(Commend)、迭代器模式(Iterator)、观察者模式(Observer)、中介者模式(Mediator)、状态模式(State)、策略模式(Strategy)、责任链模式(Chain of Responsibility)、访问者模式(Visitor)、备忘录模式(Memento)、解释器模式(Interpreter)。


三.设计模式之间关系

设计模式之(一):六大原则 + 模式分类介绍