当前位置: 首页 > news >正文

【GoF23种设计模式+简单工厂模式】

一、设计模式概述与类型

1.1、设计模式的一般定义:

设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码,让代码更容易被他人理解并且保证代码可靠性。

设计模式一般包括:模式名称问题、目的、解决方案效果等组成要素,其中模式名称、问题、解决方案和效果是关键要素。

  • 模式名称(Pattern Name):通过一两个词来描述模式的问题、解决方案和效果,以便更好地理解模式并方便开发人员之间的交流;
  • 问题(Problem):描述了应在何时使用模式,包含了设计中存在的问题以及问题存在的原因;
  • 解决方案(Solution):描述了一个设计模式的组成成分,以及这些组成成分之间的相互关系,各自的职责和协作方式,通常解决方案通过UML类图和核心代码来进行描述;
  • 效果(Consequences):描述了模式的优缺点以及在使用模式时应权衡的问题。

在学习每一个设计模式时至少应该掌握如下几点:这个设计模式的意图是什么,它要解决一个什么问题什么时候可以使用它;它是如何解决的,掌握它的结构图,记住它的关键代码;能够想到至少两个它的应用实例,一个生活中的,一个软件中的;这个模式的优缺点是什么,在使用时要注意什么。

1.2、设计模式的分类

根据用途,将设计模式分为3大类:创建者模式、结构型模式和行为型模式。

  1. 创建型模式(Creational Pattern):主要用于描述如何创建对象;
  2. 结构型模式(Structural Pattern):主要用于描述如何实现类或对象的组合;
  3. 行为型模式(Behavioral Pattern):主要用于描述类或对象怎样交互以及怎样分配职责。
类型模式名称

创建型模式(6个)

Creational Pattern

单例模式

Singleton Pattern

(不在GoF23设计模式中)

简单工厂模式

Simple Factory Pattern

工厂方法模式

Factory Method Pattern

抽象工厂模式

Abstract Pattern

原型模式

Prototype Pattern

建造者模式

Builder Pattern

结构型模式(7个)

Structural Pattern

适配器模式

Adapter Pattern

桥接模式

Bridge Pattern

组合模式

Composite Pattern

装饰模式

Decorator Pattern

外观模式

Facade Pattern

享元模式

Flyweight Pattern

代理模式

Proxy Pattern

行为型模式(11个)

Behavioral Pattern

职责链模式

Chain of Responsibility Pattern

命令模式

Command Pattern

解释器模式

Interpreter Pattern

迭代器模式

Iterator Pattern

中介者模式

Mediator Pattern

备忘录模式

Memento Pattern

观察者模式

Observer Pattern

状态模式

State Pattern

策略模式

Strategy Pattern

模板方法模式

Template Method Pattern

访问者模式

Visitor Pattern

http://www.lryc.cn/news/405476.html

相关文章:

  • 北醒单点激光雷达更改id和波特率以及Ubuntu20.04下CAN驱动
  • 【线性代数】矩阵变换
  • 聚焦智慧出行,TDengine 与路特斯科技再度携手
  • 虚拟机迁移报错:虚拟机版本与主机“x.x.x.x”的版本不兼容
  • 【教程】vscode添加powershell7终端
  • 如何乘上第四次工业革命的大船
  • RKNN执行bash ./build-linux_RK3566_RK3568.sh 报错
  • Linux常用命令整理
  • python 闭包、装饰器
  • [pycharm]解决pycharm运行程序出现卡住scanning files to index索引的问题
  • python每日学习11:numpy库的用法(下)
  • 【Emacs有什么优点,用Emacs写程序真的比IDE更方便吗?】
  • 6、基于Fabirc 2.X 通用电子存证系统部署
  • Linux Vim 由浅入深的教程
  • MIT6.824(6.5840) Lab1笔记+源码
  • 【目录】8051汇编与C语言系列教程
  • 群管机器人官网源码
  • 整合EasyExcel实现灵活的导入导出java
  • springSecurity学习之springSecurity web如何取得用户信息
  • eclipse中的classbean导入外部class文件,clean项目后删除问题
  • OBD诊断(ISO15031) 0A服务
  • ForCloud全栈安全体验,一站式云安全托管试用 开启全能高效攻防
  • Java——————接口(interface) <详解>
  • 【C++】【继承】【子对象】【构造函数】含子对象的派生类的构造函数写法
  • golang语言 .go文件版本条件编译,xxx.go文件指定go的编译版本必须大于等于xxx才生效的方法, 同一个项目多个go版本文件共存方法
  • 深入浅出mediasoup—通信框架
  • 每日一题 LeetCode03 无重复字符的最长字串
  • 栈和队列(C语言)
  • swagger-ui.html报错404
  • Milvus 核心组件(3)--- MinIO详解