设计模式介绍

以下是24种设计模式的文字概述,按类别分为创建型、结构型、行为型和并发型(部分模式可能因分类标准不同而略有差异):

创建型模式(Creational Patterns)

关注点:对象的创建过程

  1. 单例模式(Singleton)

    • 意图:确保一个类只有一个实例,并提供全局访问点。
    • 应用:配置管理器、数据库连接池、日志记录器。
  2. 工厂方法模式(Factory Method)

    • 意图:定义创建对象的接口,让子类决定实例化哪个类。
    • 应用:游戏角色工厂、文件格式解析器。
  3. 抽象工厂模式(Abstract Factory)

    • 意图:提供接口创建一系列相关对象,而无需指定具体类。
    • 应用:UI组件工厂(如Windows/macOS风格组件)。
  4. 建造者模式(Builder)

    • 意图:将复杂对象的构建与表示分离,允许相同构建过程创建不同表示。
    • 应用:汽车装配、SQL查询构建器。
  5. 原型模式(Prototype)

    • 意图:通过复制现有实例创建新对象,避免重复初始化。
    • 应用:图形对象复制、游戏角色克隆。

结构型模式(Structural Patterns)

关注点:类和对象的组合
6. 代理模式(Proxy)

  • 意图:为对象提供代理以控制对其的访问(如远程、虚拟、保护代理)。
  • 应用:网络代理、权限控制、延迟加载。
  1. 适配器模式(Adapter)

    • 意图:将一个类的接口转换成客户期望的另一个接口,解决不兼容问题。
    • 应用:第三方API适配、旧系统接口兼容。
  2. 装饰器模式(Decorator)

    • 意图:动态添加对象功能,比继承更灵活。
    • 应用:咖啡订单系统(添加配料)、日志包装器。
  3. 桥接模式(Bridge)

    • 意图:将抽象部分与实现部分分离,使它们可以独立变化。
    • 应用:跨平台图形绘制、消息发送器(邮件/SMS)。
  4. 组合模式(Composite)

    • 意图:将对象组合成树形结构表示“部分-整体”层次,统一处理单个和组合对象。
    • 应用:文件系统、组织结构图、GUI组件树。
  5. 外观模式(Facade)

    • 意图:为复杂系统提供统一简单接口,隐藏内部细节。
    • 应用:前端框架封装后端API、游戏引擎接口。
  6. 享元模式(Flyweight)

    • 意图:通过共享对象减少内存使用,适用于大量细粒度对象。
    • 应用:文本编辑器字符共享、游戏粒子系统。

行为型模式(Behavioral Patterns)

关注点:对象间的通信和职责分配
13. 策略模式(Strategy)
- 意图:定义一系列算法,将每个算法封装并使它们可互换,客户端可动态选择。
- 应用:排序算法切换、支付方式选择。

  1. 观察者模式(Observer)

    • 意图:定义对象间一对多依赖,当一个对象状态变化时,所有依赖者自动更新。
    • 应用:事件监听、发布-订阅系统。
  2. 模板方法模式(Template Method)

    • 意图:定义算法骨架,将某些步骤延迟到子类实现,避免重复代码。
    • 应用:数据库访问模板、游戏初始化流程。
  3. 责任链模式(Chain of Responsibility)

    • 意图:将请求传递给链中的多个处理者,直到有一个处理者处理它。
    • 应用:请求审批流程、异常处理链。
  4. 命令模式(Command)

    • 意图:将请求封装为对象,允许参数化客户端、排队或记录请求,支持撤销操作。
    • 应用:GUI命令按钮、宏录制、事务管理。
  5. 状态模式(State)

    • 意图:允许对象在内部状态改变时改变行为,看起来像修改了类。
    • 应用:自动售货机状态、工作流引擎。
  6. 访问者模式(Visitor)

    • 意图:在不改变对象结构的前提下,定义作用于这些对象元素的新操作。
    • 应用:编译器语法树遍历、文档格式转换。
  7. 中介者模式(Mediator)

    • 意图:定义一个中介对象封装一系列对象交互,使各对象松耦合。
    • 应用:聊天室、MVC框架中的Controller。
  8. 迭代器模式(Iterator)

    • 意图:提供一种方法顺序访问聚合对象的元素,而不暴露内部表示。
    • 应用:容器遍历、数据库结果集游标。
  9. 解释器模式(Interpreter)

    • 意图:定义语言的文法表示,并创建解释器解释该文法。
    • 应用:SQL解析、正则表达式引擎。
  10. 备忘录模式(Memento)

    • 意图:在不破坏封装的前提下,捕获并外部化对象的内部状态,以便恢复。
    • 应用:游戏存档、编辑器撤销功能。

并发型模式(Concurrency Patterns)

关注点:多线程/并发编程
24. 线程池模式(Thread Pool)
- 意图:预先创建固定数量的线程,重复使用以管理并发任务,降低线程创建开销。
- 应用:服务器请求处理、异步任务执行。

补充说明

  • 经典GoF模式:通常指前23种模式(《设计模式》书中提出),第24种(线程池)属于并发编程扩展。
  • 模式选择:根据问题场景选择,避免过度设计。例如:
    • 需要灵活创建对象 → 工厂模式。
    • 需要解耦对象交互 → 观察者/中介者模式。
    • 需要动态添加功能 → 装饰器模式。
  • 实践建议:理解模式背后的设计原则(如开闭原则、依赖倒置)比记忆模式更重要。
posted @ 2025-06-14 16:24  天堂面包  阅读(50)  评论(0)    收藏  举报