23种GoF设计模式的分类

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

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

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

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

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

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

原文地址:https://www.cnblogs.com/markkang/p/11823615.html

时间: 2024-09-30 00:49:35

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

简述23种软件设计模式

简述23种软件设计模式 一.设计模式分类 总体来说设计模式分为三大类: 五种创建型模式:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 七种结构型模式:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式. 十一种行为型模式:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.访问者模式.中介者模式.解释器模式. 二.设计模式概述 创建型模式 1.工厂方法模式 工厂方法模式的创建是因为简单工厂模式有一个问题,在简单工厂模式

23种软件设计模式

23种软件设计模式  本人是三本计科专业的学生,过了19年上半年的中级软件设计师,在辅导书上接触到23种软件设计模式的概念与作用.如果单纯的只是想把软设过了就只需要了解创建型模式,结构型模式,行为型模式分别有哪些设计模式,还要牢记每个设计模式的定义.本人有19年软件设计师最新的资料,有需要可自行下载. 参考:http://c.biancheng.net/view/1320.html 链接:https://pan.baidu.com/s/15bY8mUvIchPuCdPQUE6OSw    提取码

23种JavaScript设计模式

原文链接:https://boostlog.io/@sonuton/23-javascript-design-patterns-5adb006847018500491f3f7f 转自: https://mp.weixin.qq.com/s?__biz=MzUxMzcxMzE5Ng==&mid=2247488996&idx=1&sn=c337e4cfe2a67550f5f22536d58a9735&chksm=f951a0a7ce2629b13bb306f9a2410e2be

23种Java设计模式

1.FACTORY——追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了.麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类分开.消费者任何时候需要某种产品,只需向工厂请求即可.消费者无须修改就可以接纳新产品.缺点是当产品修改时,工厂类也要做相应的修改.如:如何创建及如何向客户端提供. 2.BUILDER——MM最爱听的就是“我爱你”这句话了,见到不同地方的MM,要能够用她们的

简谈java的23种基本设计模式

设计模式(design pattern),就是设计(design)程序时候可以拿来稍微改改就解决问题的模式(pattern). 虽然看着挺多的,但等仔细琢磨后抓住各种设计模式的相同点和每种设计模式区别其他设计模式的不同点之后(也就是抓住矛盾的普遍性和特殊性),就会发现其实一点都不多(甚至于还嫌少).(上学时候学的化学元素周期表够复杂吧?但只要知道了某种元素所在的族和所在族中的排行,学起来就容易多了.) 以下本着由远及近,由粗到细,由模糊到具体的认识原则来认识一下设计模式. 理论是对实践的一种抽象

23种Java设计模式(4)-关系模式

C.关系模式(11种) 先来张图,看看这11中模式的关系: 第一类:通过父类与子类的关系进行实现. 第二类:两个类之间. 第三类:类的状态. 第四类:通过中间类 父类与子类关系 一.策略模式(strategy) 策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户.需要设计一个接口,为一系列实现类提供统一的方法,多个实现类实现该接口,设计一个抽象类(可有可无,属于辅助类),提供辅助函数,关系图如下: 图中ICalculator提供同意的方法,A

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

本文UML类图参考<Head First 设计模式>(源码)与<设计模式:可复用面向对象软件的基础>(源码)两书中介绍的设计模式与UML图. 整理常用设计模式的类图,一方面是为了练习UML,另一方面可以重新思考设计模式.当然,整理完成后可以作为一份手册供今后翻阅. 绘图工具:Visual Studio 2015 一.创建型 Factory Method(工厂方法) 定义:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个.工厂方法让类把实例化推迟到子类. 类图: Abstr

23种基本设计模式-概述

1.为什么使用?设计模式,能够使代码更简洁.更优美.更效率.扩展性型更强. 2.设计模式的原则:开闭原则(对拓展开放,对改动关闭)(抽象化是关键) --单一职责原则:类的职责应该单一(不存在多种原因导致类的变更),否则类应该被拆分.(没理解透) --里氏替换原则:不论什么基类能够出现的地方,子类一定能够出现. (LSP)(该规范中子类尽可能不要重写或重载基类的方法)(面向对象设计的基本原则之中的一个)(开闭原则的补充)(抽象化的详细实现) --依赖反转原则:依赖于抽象.不依赖于详细.(编程是须要

【行为型模式】状态模式(state)之23种java设计模式

State接口类 public interface State { void handle(); } BookedState类 /** * 已预订状态 * @author Administrator * */ public class BookedState implements State { @Override public void handle() { System.out.println("房间已预订!别人不能定!"); } } CheckedInState类 /** * 已