23种设计模式解释+记忆

news2025/5/22 2:52:00

一、创建型模式(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.coloradmin.cn/o/2381944.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Baklib构建AI就绪型知识中台实践

Baklib驱动企业知识资产重构 在数字化转型浪潮中,企业知识中台的构建已成为激活数据价值的关键路径。Baklib通过结构化存储与智能分类引擎,将分散于邮件、文档、IM工具中的碎片化信息转化为可检索、可复用的数字资产。其核心能力体现在三个维度&#xf…

JS逆向-某易云音乐下载器

文章目录 介绍下载链接Robots文件搜索功能JS逆向**函数a:生成随机字符串****函数b:AES-CBC加密****函数c:RSA公钥加密** 歌曲下载总结 介绍 在某易云音乐中,很多歌曲听是免费的,但下载需要VIP,此程序旨在“…

服务器的基础知识

什么是服务器 配置牛、运行稳、价格感人的高级计算机,家用电脑不能比拟的。 服务器的组成:电源、raid卡、网卡、内存、cpu、主板、风扇、硬盘。 服务器的分类 按计算能力分类 超级计算机 小型机AIX x86服务器(服务器cpu架构) …

Python连接redis

第一步安装redis Releases microsoftarchive/redis 安装时勾上所有能勾上的选项下一步即可 在CMD中pip install redis 安装redis pip install redis -i https://pypi.tuna.tsinghua.edu.cn/simple 配置redis 在redis安装目录下找到 修改 line 57 bind 0.0.0.0 line…

使用exceljs将excel文件转化为html预览最佳实践(完整源码)

前言 在企业应用中,我们时常会遇到需要上传并展示 Excel 文件的需求,以实现文件内容的在线预览。经过一番探索与尝试,笔者最终借助 exceljs 这一库成功实现了该功能。本文将以 Vue 3 为例,演示如何实现该功能,代码示例…

前端面经12 函数柯里化

<script>function sum(num){return function(num2){return numnum2}}console.log(sum(1)(2))</script>面试考察 只要参数够了 达到某个数量就输出 <script>let nums[]function sum(...args){nums.push(...args)if(nums.length>5){const out (nums.slice…

告别蜘蛛池!PHP 打造你的网站专属蜘蛛导航仪

在网站优化的赛道上&#xff0c;吸引搜索引擎蜘蛛来访一直是站长和开发者关注的重点。以往借助蜘蛛池、软件等工具引蜘蛛&#xff0c;不仅存在成本高、易违规的风险&#xff0c;效果也参差不齐。现在&#xff0c;有一种更高效、更安全的方式 —— 利用 PHP 代码&#xff0c;无需…

ubuntu kubeasz 部署高可用k8s 集群

ubuntu kubeasz 部署高可用k8s 集群 测试环境主机列表软件清单kubeasz 部署高可用 kubernetes配置源配置host文件安装 ansible 并进行 ssh 免密登录:下载 kubeasz 项⽬及组件部署集群部署各组件开始安装修改 config 配置文件增加 master 节点增加 kube_node 节点登录dashboard…

芯驰科技与安波福联合举办技术研讨会,深化智能汽车领域合作交流

5月15日&#xff0c;芯驰科技与全球移动出行技术解决方案供应商安波福&#xff08;Aptiv&#xff09;在上海联合举办以“芯智融合&#xff0c;共赢未来”为主题的技术研讨会。会上&#xff0c;双方聚焦智能座舱与智能车控的发展趋势&#xff0c;展开深入交流与探讨&#xff0c;…

【论文#目标检测】End-to-End Object Detection with Transformers

目录 摘要1.引言2.相关工作2.1 集合预测2.2 Transformer和并行解码2.3 目标检测 3.DETR模型3.1 目标检测集合预测损失3.2 DETR架构 4.实验4.1 与Faster R-CNN的比较4.2 消融研究4.3 分析4.4 DETR用于全景分割 5.结论6.致谢 Author: Nicolas Carion, Francisco Massa, Gabriel S…

Elasticsearch 深入分析三种分页查询【Elasticsearch 深度分页】

前言&#xff1a; 在前面的 Elasticsearch 系列文章中&#xff0c;分享了 Elasticsearch 的各种查询&#xff0c;分页查询也分享过&#xff0c;本篇将再次对 Elasticsearch 分页查询进行专题分析&#xff0c;“深度分页” 这个名词对于我们来说是一个非常常见的业务场景&#…

DAY29 超大力王爱学Python

知识点回顾 类的装饰器装饰器思想的进一步理解&#xff1a;外部修改、动态类方法的定义&#xff1a;内部定义和外部定义 作业&#xff1a;复习类和函数的知识点&#xff0c;写下自己过去29天的学习心得&#xff0c;如对函数和类的理解&#xff0c;对python这门工具的理解等&…

Ubuntu 远程桌面配置指南

概述: 本文主要介绍在Ubuntu 22.04中通过VNC实现远程连接的方法。首先需安装图形化界面和VNC工具x11vnc,设置开机启动服务;然后在Windows客户端用VNC Viewer通过局域网IP和端口5900连接。 总结: 一、VNC配置与安装 安装图形化界面 在Ubuntu 22.04中需先安装: sudo apt …

推扫式高光谱相机VIX-N230重磅发布——开启精准成像新时代

随着各行业对高光谱成像技术需求的持续增长&#xff0c;市场对于高分辨率、高灵敏度以及快速成像的高光谱相机的需求愈发迫切。中达瑞和凭借多年的行业经验和技术积累&#xff0c;敏锐捕捉到这一市场趋势&#xff0c;正式推出全新一代推扫式可见光近红外高光谱相机——VIX-N230…

Parsec解决PnP连接失败的问题

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、准备环境二、DMZ三、端口映射1.Parsec设置固定端口2.路由器设置端口转发3.重启被控端Parsec四、多少一句1.有光猫管理员账号2.没有光猫管理员账号总结 前言…

软件I2C

软件I2C 注意&#xff1a; SDA&#xff08;串行数据线&#xff09;和SCL&#xff08;串行时钟线&#xff09;都是双向I/O线&#xff0c;接口电路为开漏输出。需通过上拉电阻接电源VCC。 软件I2C说明 说明&#xff0c;有的单片机没有硬件I2C的功能&#xff0c;或者因为电路设计…

Brooks Polycold快速循环水蒸气冷冻泵客户使用手含电路图,适用于真空室应用

Brooks Polycold快速循环水蒸气冷冻泵客户使用手含电路图&#xff0c;适用于真空室应用

关于在Unity项目中使用Post Processing插件打包到web端出现的问题

关于在Unity项目中使用Post Processing插件打包到web端出现的问题 解决方法&#xff1a;是不激活摄像机上的Post Processing有关组件&#xff0c;拉低场景中的Directional Light平行光的强度进行web端打包。 &#xff08;烘焙灯光时是可以激活。&#xff09; web端支持这个Pos…

Prompt Tuning:高效微调大模型的新利器

Prompt Tuning(提示调优)是什么 Prompt Tuning(提示调优) 是大模型参数高效微调(Parameter-Efficient Fine-Tuning, PEFT)的重要技术之一,其核心思想是通过优化 连续的提示向量(而非整个模型参数)来适配特定任务。以下是关于 Prompt Tuning 的详细解析: 一、核心概念…

C++初阶-vector的底层

目录 1.序言 2.std::sort(了解) 3.vector的底层 3.1讲解 3.2构造函数 3.3push_back函数 3.4begin()和end()函数 3.5capacity()和size()函数和max_size函数 3.5.1size&#xff08;&#xff09;函数 为什么这样写&#xff1f; 底层原理 3.5.2max_size()函数 为什么这…