GoF设计模式一共有23个。一般可以按目的和作用范围来进行划分,具体划分方法如下:

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

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

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

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

第二,按其是用到类上还是对象上来划分,可以分为类和对象两种模式。

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

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

将这两种分类方法作为纵横方向,可以将具体的模式分类列一个表如下。

23种GoF设计模式分类表

    目的

范围

创建型/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

 

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

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

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

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

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

 
 

23种GoF设计模式的分类的更多相关文章

  1. 23种GoF设计模式概述

    23种GoF设计模式概述 在前面,我们对 GoF 的 23 种设计模式进行了分类,这里先对各个设计模式的功能进行简要介绍,以便有个大概了解.后面的章节再进行详细介绍. 创建型模式 关注于怎么创建对象的 ...

  2. 002-创建型-00-简单工厂【非23种GOF设计模式】

    一.概述 简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一. 简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实 ...

  3. 23种经典设计模式UML类图汇总

    在这里23种经典设计模式UML类图汇总       创建型模式 1.FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基 ...

  4. javaEE Design Patter(1)初步了解23种常用设计模式

    设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式. ...

  5. 23种常用设计模式的UML类图

    23种常用设计模式的UML类图 本文UML类图参考<Head First 设计模式>(源码)与<设计模式:可复用面向对象软件的基础>(源码)两书中介绍的设计模式与UML图. 整 ...

  6. 转载:23种常用设计模式的UML类图

    转载至:https://www.cnblogs.com/zytrue/p/8484806.html 23种常用设计模式的UML类图 本文UML类图参考<Head First 设计模式>(源 ...

  7. Java中23种经典设计模式详解

    Java中23种设计模式目录1. 设计模式 31.1 创建型模式 41.1.1 工厂方法 41.1.2 抽象工厂 61.1.3 建造者模式 101.1.4 单态模式 131.1.5 原型模式 151. ...

  8. 23种JavaScript设计模式

    原文链接:https://boostlog.io/@sonuton/23-javascript-design-patterns-5adb006847018500491f3f7f 转自: https:/ ...

  9. 在这里23种经典设计模式UML类图汇总

    创建型模式 1.FACTORY-追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说"来四个鸡翅"就 ...

随机推荐

  1. oc基本控件

    (一)添加UIWindow UIWindow *window1=[[UIWindow alloc] init]; //window.frame=CGRectMake(10, 470, 100, 30) ...

  2. WordCount的实现和测试

    WordCount 一.开头 (1)合作者:201631107110,201631083416 (2)代码地址:https://gitee.com/zhaoxiaoqin/WordCount.git ...

  3. foreach数组并直接改变数组内容

    <?php $arr = array(1, 2, 3, 4); foreach ($arr as &$value) { $value = $value * 2; } // $arr is ...

  4. [考试反思]0816NOIP模拟测试23

    210 210 210 170 还可以.暴力打满就rk4了? 但不管怎么说,总算是在改完题之后理直气壮的写考试反思了. T1是个dp,说水也不太水.(当然某脸只要A掉了一道题就要说那是水题) 我的思路 ...

  5. ASP.NET Core Blazor 用Inspinia静态页模板搭建简易后台(实现菜单选中)

    Blazor 是一个用于使用 .NET 生成交互式客户端 Web UI 的框架: 使用 C# 代替 JavaScript 来创建丰富的交互式 UI. 共享使用 .NET 编写的服务器端和客户端应用逻辑 ...

  6. 【并发编程】ThreadLocal其实很简单

    什么是ThreadLocal ThreadLocal有点类似于Map类型的数据变量.ThreadLocal类型的变量每个线程都有自己的一个副本,某个线程对这个变量的修改不会影响其他线程副本的值.需要注 ...

  7. 『题解』Coderforces352A Jeff and Digits

    更好的阅读体验 Portal Portal1: Codeforces Portal2: Luogu Description Jeff's got n cards, each card contains ...

  8. 机器学习环境搭建安装TensorFlow1.13.1+Anaconda3.5.3+Python3.7.1+Win10

    安装Python3.7.1 此处不再赘述安装过程,作为记录 安装Anaconda3.5.3 Anaconda3-5.3.0-Windows-x86_64.exe 方案1. 可以直接从官网https:/ ...

  9. SpringBoot 源码解析 (一)----- SpringBoot核心原理入门

    Spring Boot 概述 Build Anything with Spring Boot:Spring Boot is the starting point for building all Sp ...

  10. Appium+python自动化(三十九)-Appium自动化测试框架综合实践 - 代码实现(超详解)

    简介 经过一段时间的准备,完善的差不多了,继续分享有关Appium自动化测试框架综合实践.想必小伙伴们有点等不及了吧! driver配置封装 kyb_caps.yaml 配置表 参考代码 platfo ...