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

23种设计模式解释+记忆

一、创建型模式(5种)—— “怎么造对象?”

  1. 单例模式(Singleton)
    场景:公司的CEO只能有一个。
    核心:确保一个类只有一个实例,全局访问。
    关键词:唯一、全局访问。

  2. 工厂方法模式(Factory Method)
    场景:奶茶店根据顾客点的类型(奶茶/果茶)生产对应的饮料。
    核心:定义一个创建对象的接口,由子类决定实例化哪个类。
    关键词:子类决定、生产接口。

  3. 抽象工厂模式(Abstract Factory)
    场景:家具店提供“北欧风”或“中式风”的成套家具(椅子+桌子)。
    核心:创建一组相关或依赖的对象,无需指定具体类。
    关键词:产品族、成套创建。

  4. 建造者模式(Builder)
    场景:组装电脑,分步骤选CPU、内存、硬盘,最后拼成整机。
    核心:分步骤构建复杂对象,分离构造与表示。
    关键词:分步骤、复杂对象。

  5. 原型模式(Prototype)
    场景:复印机直接复制一份现有文件,不用重新手写。
    核心:通过复制现有对象来创建新对象。
    关键词:克隆、复制原型。


二、结构型模式(7种)—— “对象如何组合?”

  1. 适配器模式(Adapter)
    场景:电源转换插头(美标→国标)。
    核心:让不兼容的接口协同工作。
    关键词:转换接口、兼容。

  2. 桥接模式(Bridge)
    场景:遥控器(抽象)和电视(实现)分离,遥控器可以控制不同品牌电视。
    核心:将抽象与实现解耦,独立变化。
    关键词:抽象与实现分离、解耦。

  3. 组合模式(Composite)
    场景:文件夹(容器)和文件(叶子)统一视为“文件系统节点”。
    核心:将对象组合成树形结构,统一处理部分和整体。
    关键词:树形结构、统一接口。

  4. 装饰器模式(Decorator)
    场景:给手机加外壳、贴膜、挂绳(动态添加功能)。
    核心:动态扩展对象功能,避免继承爆炸。
    关键词:包装、动态扩展。

  5. 外观模式(Facade)
    场景:酒店前台(门面)帮你处理订房、订餐、叫车,你无需对接多个部门。
    核心:提供统一接口,简化子系统调用。
    关键词:统一入口、简化调用。

  6. 享元模式(Flyweight)
    场景:棋盘游戏中的棋子,共用“颜色”属性,只存储位置等独特属性。
    核心:共享细粒度对象,减少内存开销。
    关键词:共享、减少重复。

  7. 代理模式(Proxy)
    场景:代购帮你买国外商品,你无需直接联系商家。
    核心:通过代理对象控制对真实对象的访问。
    关键词:代替访问、控制权限。


三、行为型模式(11种)—— “对象如何协作?”

  1. 观察者模式(Observer)
    场景:微信群消息通知,发一条消息,所有群成员都能收到。
    核心:定义一对多依赖,一个对象状态改变,所有依赖者自动更新。
    关键词:订阅、通知。

  2. 策略模式(Strategy)
    场景:出行选择不同的交通工具(开车/公交/骑行),随时切换策略。
    核心:定义算法族,封装后可以互相替换。
    关键词:算法替换、灵活选择。

  3. 命令模式(Command)
    场景:餐厅点餐,顾客点单(命令)交给服务员,服务员再通知厨师执行。
    核心:将请求封装为对象,支持请求排队、撤销。
    关键词:封装请求、解耦调用者与执行者。

  4. 责任链模式(Chain of Responsibility)
    场景:请假审批流程(员工→组长→经理→CEO),层层传递直到有人处理。
    核心:将请求沿处理链传递,直到有对象处理它。
    关键词:传递处理、层层审批。

  5. 状态模式(State)
    场景:电灯有“开”和“关”两种状态,按开关时行为不同。
    核心:允许对象在内部状态改变时改变行为。
    关键词:状态驱动行为。

  6. 模板方法模式(Template Method)
    场景:泡茶的固定流程(烧水→放茶叶→倒水→加料),具体步骤可微调。
    核心:定义算法骨架,子类重写某些步骤。
    关键词:固定流程、步骤扩展。

  7. 访问者模式(Visitor)
    场景:税务人员到公司计算不同部门(财务/技术)的税费。
    核心:将算法与对象结构分离,新增操作不修改原有类。
    关键词:外人处理、分离算法。

  8. 中介者模式(Mediator)
    场景:机场调度塔协调所有飞机的起飞降落,避免飞机直接通信。
    核心:通过中介对象集中管理对象间交互。
    关键词:集中调度、解耦交互。

  9. 备忘录模式(Memento)
    场景:游戏存档,保存当前进度,之后可以恢复。
    核心:捕获对象内部状态,并在需要时恢复。
    关键词:存档、恢复状态。

  10. 迭代器模式(Iterator)
    场景:遥控器遍历电视频道,无需知道频道如何存储。
    核心:提供统一接口遍历聚合对象的元素。
    关键词:统一遍历、隐藏结构。

  11. 解释器模式(Interpreter)
    场景:翻译机将中文翻译成英文,按语法规则解析。
    核心:定义语法规则,解释特定语言或表达式。
    关键词:语法解析、解释执行。


四、背诵口诀

1. 分类记忆法
  • 创建型(5):单例、工厂方法、抽象工厂、建造者、原型。
    口诀:单厂建原抽(想象“一个工厂建造原型车”)。

  • 结构型(7):适配器、桥接、组合、装饰器、外观、享元、代理。
    口诀:适桥组,装外享代(想象“适合桥组在外享受代理服务”)。

  • 行为型(11):观察者、策略、命令、责任链、状态、模板方法、访问者、中介者、备忘录、迭代器、解释器。
    口诀:观策命责状,模访中备迭解(想象“观察策略命令的责任状,模仿访问中备用的迭代解决方案”)。

2. 数字联想法
  • 创建型(5):1单例、2工厂、3抽象工厂、4建造者、5原型。

  • 结构型(7):6适配器、7桥接、8组合、9装饰器、10外观、11享元、12代理。

  • 行为型(11):13观察者到23解释器,按顺序记忆。

http://www.xdnf.cn/news/514225.html

相关文章:

  • 虚幻引擎5-Unreal Engine笔记之`GameMode`、`关卡(Level)` 和 `关卡蓝图(Level Blueprint)`的关系
  • 快速上手SElinux
  • 第8章 常用实用类
  • 基于shardingsphere的分库分表方案
  • redis读写一致问题
  • Visual Studio已更新为17.14+集成deepseek实现高效编程
  • AI大模型(二)embedding模型调用后对产生的数据进行分析
  • 水平可见直线--上凸包(andrew算法
  • 【嵙大o】C++作业合集
  • 不同版本 Linux 系统账号操作指令 ——rtkit 账号删除、普通账号的创建 / 删除 / 权限修改超详细大全
  • 如何在 Windows 11 或 10 上安装 Amazon Corretto
  • Ubuntu 20.04 报错记录: Matplotlib 无法使用 OpenCV 的 libqxcb.so
  • O2O电商变现:线上线下相互导流——基于定制开发开源AI智能名片S2B2C商城小程序的研究
  • Python蓝色飘雪
  • Linux云计算训练营笔记day10(MySQL数据库)
  • Java虚拟机 - JVM与Java体系结构
  • MyBatis 核心技术详解:从连接池到多表查询
  • Python多进程、多线程、协程典型示例解析
  • 深入理解 OpenCV 的 DNN 模块:从基础到实践
  • OpenSearch入门:从文档示例到查询实战
  • MCP - Cline 接入 高德地图 Server
  • DAY 29 复习日:类的装饰器
  • # 终端执行 java -jar example.jar 时(example.jar为项目jar包)报错:“没有主清单属性” 的解决方法
  • 第一章:重启之始
  • 零基础搭建!基于PP-ShiTuV2的轻量级图像识别系统(Docker+API部署指南)
  • 蓝桥杯1140 最小质因子之和(Hard Version)
  • 2KW压缩机驱动参考设计【SCH篇】
  • 使用conda创建python虚拟环境,并自定义路径
  • C++学习:六个月从基础到就业——C++20:协程(Coroutines)
  • Golang内存逃逸