23种GoF设计模式的分类

GoF设计模式一共有23个。通常能够按目的和做用范围来进行划分,具体划分方法以下:设计模式

第一,这些模式按目的(即完成什么样任务)来划分为建立型、结构型和行为型这三种模式:ui

建立型:用来建立对象。单例、原型、抽象工厂、建造者、工厂方法这五个都属于这一分类。这种类别起到了将对象的建立与其使用进行分离解耦。spa

结构型:用来处理类或对象之间如何组合以构成更大的结构体。桥接、装饰、适配器、代理、外观、享元、组合这七个属于这一类。设计

行为型:用来处理类或对象之间如何交互和分配职责。模板方法、解释器、策略、命令、职责链、状态、观察者、中介者、迭代器、访问者、备忘录这11个属于这一类。代理

 

第二,按其是用到类上仍是对象上来划分,能够分为类和对象两种模式。server

类模式:主要用来处理类与其子类之间继承关系,这种关系是编译时肯定的,运行时是静态和不变的。工厂方法、模板方法、(类)适配器、解释器这四个属于这一种。对象

对象模式:用于处理对象之间的组合或者聚合关系,运行时能够变化,是动态的。其余的19种都属于这一模式。具体见下图。继承

将这两种分类方法做为纵横方向,能够将具体的模式分类列一个表以下。ci

 

23种GoF设计模式分类表pdo

    目的

范围

建立型/Creational

结构型/Structural

行为型/Behavioural

类型/Class

工厂方法/Factory Method

适配器(类)/Adapter(class)

解释器/Interpreter

模板方法/Template method

对象型/Object

单例/Singleton

原型/Prototype

抽象工厂/Abstract Factory

建造者/Builder

桥接/Bridge

装饰/Decorator

代理/Proxy

外观/Facade

享元/Flyweight

组合/Composite

适配器(对象)/Adapter(object)

职责链/Chain of Responsibility

命令/Command

观察者/Observer

中介者/Mediator

状态/State

访问者/Visitor

迭代器/Iterator

备忘录Memento

策略/Strategy

 

 

注意:通常初学者,由于记起来比较难记,本人原来是按照取每种模式的第一个字的谐音构成一句话来记忆,后面带有中划线的斜体的是类模式,虽然说有些不正经、可是效果明显。若是深刻理解了,就会很天然地根据名字划分,不须要这么记忆。

建立型:单元抽建 ——> 单例、原型、抽象工厂、建造者、工厂方法

结构型:乔装(后)呆(在)外(面)像祖(爷) ——> 桥接、装饰、代理、外观、享元、组合、适配器(对象或者类)

行为型:除过前面的都是行为型。或者以下:

             知名观众装碟防被测(试带有)芥末 ——> 职责链、命令、观察者、中介者、状态、迭代器、访问者、备忘录、策略、解释器、模板方法。