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 |
注意:一般初学者,因为记起来比较难记,本人原来是按照取每种模式的第一个字的谐音构成一句话来记忆,后面带有中划线的斜体的是类模式,虽说有些不正经、但是效果明显。如果深入理解了,就会很自然地根据名字划分,不需要这么记忆。
创建型:单元抽建法 ——> 单例、原型、抽象工厂、建造者、工厂方法。
结构型:乔装(后)呆(在)外(面)像祖师(爷) ——> 桥接、装饰、代理、外观、享元、组合、适配器(对象或者类)
行为型:除过前面的都是行为型。或者如下:
知名观众装碟防被测(试带有)芥末 ——> 职责链、命令、观察者、中介者、状态、迭代器、访问者、备忘录、策略、解释器、模板方法。
最新文章
- SQL Server 深入解析索引存储(中)
- [IOS初学]ios 第一篇 storyboard 与viewcontroller的关系
- jq pagination分页 全选、单选的思考
- EF6 CodeFirst+Repository+Ninject+MVC4+EasyUI实践(三)
- find the peak value
- java 零碎1
- Android Design Support Library 的 代码实验——几行代码,让你的 APP 变得花俏
- spring security源码分析之一springSecurityFilterChain
- poj 1364 King(差分约束)
- 安卓开发中使用Genymotion模拟器
- javascript对象的理解
- Min Stack 解答
- PyCharm 2017 免费 破解 注册 激活 教程(附 License Server 地址)(Python 编辑器 IDE 推荐)
- Webpack+vue2.0如何注册全局组件 (01)
- ipv6地址抓包分析
- MySQL系列详解七:MySQL双主架构演示-技术流ken
- php 中 opendir() readdir() scandir()
- Python datetime获取详细时间
- hdu3189-Just Do It-(埃氏筛+唯一分解定理)
- DTCMS部署错误
热门文章
- Andriod开发环境搭建
- spring cloud 面试题总结
- 关于 mybatis 报invalid comparison: java.util.Arrays$ArrayList and java.lang.String异常
- 一位年轻而优秀的.NET开发者的成长点滴
- data-*设置自定义属性注意事项一
- Java基础系列二:Java泛型
- SpringCloud之Hystrix-Dashboard监控,以及踩的坑...
- Mongo 导出为csv文件
- Android 常见内存泄露 &; 解决方案
- 网络安全-主动信息收集篇第二章-二层网络扫描之nmap