设计模式类型

一、创建型模式

  1. 单例模式
    • 核心:确保类仅有一个实例,提供全局访问点。
    • 场景:数据库连接池避免频繁创建和销毁连接。
  2. 工厂模式
    • 核心:定义创建对象的接口,由子类决定实例化的类。
    • 场景:游戏开发中按需求创建不同类型武器。
  3. 抽象工厂模式
    • 核心:提供创建系列相关或依赖对象的接口,无需指定具体类。
    • 场景:游戏开发中创建不同风格场景下的对象。
  4. 建造者模式
    • 核心:将复杂对象构建与表示分离,同一构建过程可创建不同表示。
    • 场景:汽车制造中构建不同配置的汽车。
  5. 原型模式
    • 核心:通过拷贝原型实例创建新对象。
    • 场景:图形设计软件复制图形对象。

二、结构型模式

  1. 代理模式
    • 核心:为对象提供代理以控制对其的访问。
    • 场景:网络访问代理,如访问国外网站。
  2. 装饰器模式
    • 核心:动态给对象添加额外职责,比生成子类更灵活。
    • 场景:咖啡店中用调料装饰咖啡。
  3. 适配器模式
    • 核心:将类的接口转换为客户期望的接口,使不兼容的类能协作。
    • 场景:不同国家使用电器时的电源适配器。
  4. 桥接模式
    • 核心:分离抽象部分与实现部分,使其可独立变化。
    • 场景:图形绘制中使图形和颜色独立变化。
  5. 组合模式
    • 核心:将对象组合成树形结构表示 "部分 - 整体" 层次,统一操作单个和组合对象。
    • 场景:文件系统对文件夹和文件的统一操作。
  6. 外观模式
    • 核心:为子系统接口提供一致界面,方便使用。
    • 场景:智能家居系统通过统一接口控制多个设备。
  7. 享元模式
    • 核心:运用共享技术支持大量细粒度对象。
    • 场景:文字处理软件共享字符以减少内存占用。

三、行为型模式

  1. 观察者模式
    • 核心:定义对象间一对多依赖关系,对象状态改变时通知依赖对象更新。
    • 场景:社交媒体平台用户发布动态通知关注者。
  2. 模板方法模式
    • 核心:定义算法骨架,将部分步骤延迟到子类实现。
    • 场景:制作蛋糕时不同蛋糕按模板实现特定步骤。
  3. 命令模式
    • 核心:将请求封装为对象,可对请求进行参数化、排队、记录日志和撤销操作。
    • 场景:游戏中封装玩家操作并控制执行。
  4. 状态模式
    • 核心:对象内部状态改变时改变其行为。
    • 场景:电梯系统不同状态下行为不同。
  5. 职责链模式
    • 核心:多个对象处理请求,避免发送者和接收者耦合,请求沿链传递直到被处理。
    • 场景:公司请假流程中申请按领导职责链传递。
  6. 解释器模式
    • 核心:定义语言文法表示和解释器,解释语言句子。
    • 场景:编译器解析和解释编程语言语法。
  7. 中介者模式
    • 核心:用中介对象封装对象交互,降低耦合度。
    • 场景:机场空中交通管制系统协调飞机起降和飞行。
  8. 迭代器模式
    • 核心:提供顺序访问聚合对象元素的方法,不暴露内部表示。
    • 场景:Java 集合类通过迭代器遍历元素。
  9. 访问者模式
    • 核心:在不改变元素类的前提下定义作用于元素的新操作。
    • 场景:图形编辑软件用访问者对图形进行不同操作。
相关推荐
Zane19943 小时前
一个 new 就能创建对象,为什么还要拆出单例、工厂、建造者、原型四种模式?
设计模式
怕浪猫1 天前
一行命令复刻爆款视频,我把 Hypit 从安装跑到了出片
人工智能·设计模式·程序员
Zane19941 天前
函数式编程里的函数,其实不是你天天写的那个函数——三大编程范式的边界在哪
设计模式
Zane19942 天前
策略模式现在该不该上?一次讲清楚过度设计和设计不足怎么找平衡
设计模式
她说..2 天前
常见设计模式-模板方法模式
java·spring·设计模式·springboot
xiaofeiyang1503 天前
第六章 · 桥接 — 三支毛笔,画出九种颜色
设计模式
Shadow(⊙o⊙)3 天前
OTOL设计模式 One Thread One Loop
服务器·网络·设计模式
sarasuki4 天前
如何让LLM 能在半夜偷偷打开网易云呢?
人工智能·设计模式·agent
小王师傅664 天前
【设计模式】装饰模式(四):框架源码实战——从 Java I/O 到 Spring 到 MyBatis
java·设计模式
执明wa4 天前
Android RecyclerView 多类型, 多种 Item
android·xml·开发语言·设计模式·android studio