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

23种设计模式以及对应的三种分类——快速及仪表——自留用

基础记忆表

分类模式名称(英文)核心作用关键字说明

创建型模式

(5 种)

工厂方法模式

(Factory Method)

定义创建对象的接口,让子类决定实例化哪个类子类决定实例化

抽象工厂模式

(Abstract Factory)

提供创建一系列相关 / 依赖对象的接口抽象接口
原型模式(Prototype)通过复制已有对象创建新对象原型实例、拷贝
单例模式(Singleton)保证一个类只有一个实例,并提供全局访问点唯一实例
构建器模式(Builder)将复杂对象的构建与表示分离类和构造分离

结构型模式

(7 种)

适配器模式(Adapter)将一个类的接口转换成客户期望的另一个接口转换/兼容/接口
桥接模式(Bridge)将抽象与实现分离,使它们可以独立变化抽象和实现分离
组合模式(Composite)用树形结构表示 “整体 - 部分” 关系整体-部分,树形结构
装饰模式(Decorator)动态给对象添加额外职责附加职责
外观模式(Facade)为子系统中的一组接口提供统一的高层接口对外统一接口
享元模式(Flyweight)复用对象,减少创建和内存占用细粒度,共享
代理模式(Proxy)为其他对象提供一个代理以控制访问代理控制

行为型模式

(11 种)

职责链模式(Chain of Responsibility)让请求沿着处理链传递,解耦发送者与接收者传递请求,职责连接
命令模式(Command)将请求封装为对象,支持撤销、排队等日志记录,可撤销
解释器模式(Interpreter)定义语言文法的表示,并解释其句子解释器,虚拟机
迭代器模式(Iterator)提供一种方式遍历聚合对象,不暴露内部结构顺序访问,不暴露内部
中介者模式(Mediator)用中介对象封装一组对象的交互不直接引用
备忘录模式(Memento)在不破坏封装的前提下,保存对象的状态保存,恢复
观察者模式(Observer)定义对象间一对多的依赖关系,状态改变时通知所有依赖者通知,自动更新
状态模式(State)允许对象在内部状态改变时改变其行为状态变成类
策略模式(Strategy)定义一系列算法,将每个算法封装并可互换算法替换
模板方法模式(Template Method)定义算法骨架,将部分步骤延迟到子类实现
访问者模式(Visitor)表示作用于对象结构中各元素的操作数据和操作分离

常出考点

前几个四星的必须记住。

模式名称考频核心定义高频场景易错点 / 考点
策略模式(Strategy)⭐⭐⭐⭐⭐定义一系列算法,封装并可互换算法动态切换,如不同的排序算法、支付方式核心是 “算法族”,与模板方法的区别
观察者模式(Observer)⭐⭐⭐⭐⭐定义一对多依赖,状态改变时通知所有依赖者事件监听、消息推送,如 MVC 中的模型 - 视图推模式 vs 拉模式;解耦主题与观察者
模板方法模式(Template Method)⭐⭐⭐⭐⭐定义算法骨架,部分步骤延迟到子类固定流程、步骤可变的场景,如考试流程、数据解析类模式,依赖继承;钩子方法的作用
职责链模式(Chain of Responsibility)⭐⭐⭐⭐让请求沿处理链传递,解耦发送者与接收者多级审批、日志处理、过滤器链链的顺序与终止条件;避免循环引用
状态模式(State)⭐⭐⭐⭐对象状态改变时改变其行为状态机场景,如订单状态(待支付 / 已发货 / 已完成)用状态类替代大量 if-else;与策略模式的区别
迭代器模式(Iterator)⭐⭐⭐提供遍历聚合对象的方式,不暴露内部结构集合遍历,如 Java 的 Iterator 接口与聚合对象的关系;支持不同遍历方式
命令模式(Command)⭐⭐⭐将请求封装为对象,支持撤销、排队操作记录、撤销 / 重做,如编辑器的操作历史命令对象的封装;接收者与调用者解耦
备忘录模式(Memento)⭐⭐⭐不破坏封装的前提下保存对象状态快照功能,如游戏存档、文本编辑器的撤销备忘录的访问控制;发起人 - 备忘录 - 管理者结构
中介者模式(Mediator)⭐⭐⭐用中介对象封装一组对象的交互多对象交互复杂的场景,如聊天室、机场调度减少对象间的直接耦合;中介者的复杂度控制
访问者模式(Visitor)⭐⭐⭐定义作用于对象结构元素的操作稳定的数据结构、易变的操作,如编译器的语法树双重分派;开闭原则的反向应用
解释器模式(Interpreter)⭐⭐定义语言文法并解释其句子简单语法解析,如正则表达式、脚本语言文法规则的抽象;适用于简单文法

策略模式

定义:定义一系列算法,封装并可互换,实现算法动态切换(如不同排序算法、支付方式)。

观察者模式

看模型就行。

http://www.jsqmd.com/news/658364/

相关文章:

  • 【和风天气】开始使用:天气API请求 城市编码API请求
  • 不同材质工件(塑胶/金属/镀锌件)喷漆加工的工艺差异
  • 基于STM32LXXX的无线收发芯片(SI4463-C2A-GMR)应用程序设计
  • 健康管理没有局外人!深圳国商联帮你把健康握在手里
  • 从代码孤岛到智能协同,揭秘头部科技公司如何用LLM+GitOps实现PR通过率提升67%、交付周期压缩42%,你团队缺的不是工具,而是这1套协作协议
  • 周红伟:RAG 与知识检索
  • 从零实现MDP:用Python代码拆解马尔可夫决策过程核心算法
  • AI编程全栈实战课:网站开发+多端封装+微信小程序+支付上线,零基础一站式学会落地
  • 基于STM32LXXX的无线收发芯片(CC2530F256RHAR)应用程序设计
  • 如何高效实现B站视频智能转文字:bili2text技术深度解析与实战指南
  • 7种RAG查询预处理方案详解:告别检索效果差,提升回复质量!
  • 腾讯AI 应用开发 面经,一次过
  • Unity游戏窗口自定义:实现标题栏与边框的动态控制
  • PyCharm里用pip装Seaborn总失败?试试这3种更稳的安装方式(含Anaconda对比)
  • 为什么会选择美国洛杉矶代理IP来做TikTok业务?
  • 超详细!Hermes Agent 一键部署全流程指南,轻松上手不踩坑
  • 接口返回blob,如何实现小程序下载
  • 告别Batch Size焦虑:用PyTorch手把手实现Group Normalization(附完整代码)
  • 如何获取并定制化订货系统源码以适应企业需求?
  • Java转大模型,8个月上岸
  • HPH构造一看就懂!核心部件和工作原理
  • 2026国产适合企业的Ai智能体平台选型推荐:架构师视角下的非侵入式集成与提效避坑指南
  • 一份就懂的PyOpenGL实战指南,从零到一构建3D小游戏!
  • ESP32编译固件内存信息解读
  • **剪枝模型实战:用Python实现轻量化神经网络优化,从理论到代码全解析**
  • OpenClaw为何疯狂“吃”Token?
  • 有赞对接金蝶云星空全链路技术解决方案
  • ceph的monitor集群和osd集群
  • Siemens 6DS1311-8AE 总线驱动
  • 鱼眼双目测距实战:从OpenCV标定到SGBM匹配的完整流程解析