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 |
注意:一般初学者,因为记起来比较难记,本人原来是按照取每种模式的第一个字的谐音构成一句话来记忆,后面带有中划线的斜体的是类模式,虽说有些不正经、但是效果明显。如果深入理解了,就会很自然地根据名字划分,不需要这么记忆。
创建型:单元抽建法 ——> 单例、原型、抽象工厂、建造者、工厂方法。
结构型:乔装(后)呆(在)外(面)像祖师(爷) ——> 桥接、装饰、代理、外观、享元、组合、适配器(对象或者类)
行为型:除过前面的都是行为型。或者如下:
知名观众装碟防被测(试带有)芥末 ——> 职责链、命令、观察者、中介者、状态、迭代器、访问者、备忘录、策略、解释器、模板方法。
23种GoF设计模式的分类的更多相关文章
- 23种GoF设计模式概述
23种GoF设计模式概述 在前面,我们对 GoF 的 23 种设计模式进行了分类,这里先对各个设计模式的功能进行简要介绍,以便有个大概了解.后面的章节再进行详细介绍. 创建型模式 关注于怎么创建对象的 ...
- 002-创建型-00-简单工厂【非23种GOF设计模式】
一.概述 简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一. 简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实 ...
- 23种经典设计模式UML类图汇总
在这里23种经典设计模式UML类图汇总 创建型模式 1.FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基 ...
- javaEE Design Patter(1)初步了解23种常用设计模式
设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式. ...
- 23种常用设计模式的UML类图
23种常用设计模式的UML类图 本文UML类图参考<Head First 设计模式>(源码)与<设计模式:可复用面向对象软件的基础>(源码)两书中介绍的设计模式与UML图. 整 ...
- 转载:23种常用设计模式的UML类图
转载至:https://www.cnblogs.com/zytrue/p/8484806.html 23种常用设计模式的UML类图 本文UML类图参考<Head First 设计模式>(源 ...
- Java中23种经典设计模式详解
Java中23种设计模式目录1. 设计模式 31.1 创建型模式 41.1.1 工厂方法 41.1.2 抽象工厂 61.1.3 建造者模式 101.1.4 单态模式 131.1.5 原型模式 151. ...
- 23种JavaScript设计模式
原文链接:https://boostlog.io/@sonuton/23-javascript-design-patterns-5adb006847018500491f3f7f 转自: https:/ ...
- 在这里23种经典设计模式UML类图汇总
创建型模式 1.FACTORY-追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说"来四个鸡翅"就 ...
随机推荐
- 【Redis深度历险】那些年Redis的数据结构
[Redis深度历险]那些年Redis的数据结构 Redis端口号6379的来源 Redis的端口号是6379,但这个端口号并不是随机选择的,源于"MERZ",这个单词在手机当中的 ...
- cacti1.2.7安装教程+Centos7|Cacti1.2.x+Centos7+Spine1.2.7零基础手把手教学
cacti1.2.7安装教程+Centos7|Cacti1.2.x+Centos7+Spine1.2.7零基础手把手教学 教程地址: 链接:http://note.youdao.com/notesha ...
- PHP函数preg_match()
部分内容来自:http://www.nowamagic.net/librarys/veda/detail/1054 preg_match — 进行正则表达式匹配. 语法:int preg_match ...
- 关于virtualbox虚拟电脑控制台严重错误解决方法。。。
今天的我已经泪崩,忙了一天,临近下班的时候,突然发现虚拟机关了,再打开时,提示错误!!! 然后在网上查方法解决完的时候,再打开一看,完了,虚拟机里面的内容全没了...现将解决方法记录如下: 1.打开, ...
- [考试反思]1109csp-s模拟测试107:低能
诶一看这不是水题AK场吗?然后80分钟就拿到了285分. 然后,对拍?还是卡T2常数?还是想T2正解? 于是上述三项我依次进行了. 前两项让我的分数丝毫不变但是吃掉了我一个多小时的时间. 卡常卡的也不 ...
- CSPS模拟 78
大敛好稳啊..居然在模拟赛拿了540.. 有点畏惧.jpg 而我就是什么什么不行级人物了.. 真正在联赛拉开那么多分怎么追啊.. T1kmp?hash? T2 概率小到炸精时,对答案也就没贡献了 然后 ...
- margin:0 auto为何会居中?
margin: 0 auto;为何会居中呢??? 一开始的学习html的时候,就是只知道块级元素margin:0 auto就能居中 但是后来就很好奇 margin: auto 0;为何不能垂直居中? ...
- UiPath之基础知识(一)
各位小伙伴,大家好.在10月份小U的微信订阅号做了一个投票,主题是UiPath目前已经掌握的程度. 从投票的结果来看,有一半以上的人还是刚刚起步,为了帮助刚刚起步的小伙伴,准备陆续发布一些基础性的内容 ...
- 使用springcloud开发测试问题总结
使用springcloud开发测试 如下描述的问题,没有指明是linux部署的,都是在windows开发环境上部署验证发现的. Issue1配置客户端不使用配置中心 问题描述: 配置客户端使用配置中心 ...
- Python实现自动化监控远程服务器
最近发现Python课器做很多事情,在监控服务器有其独特的优势,耗费资源少,开发周期短. 首先我们做一个定时或者实时脚本timedtask.py,让其定时监控目标服务器,两种方式: 第一种: #!/u ...