软件设计模式

发布于:2025-04-19 ⋅ 阅读:(25) ⋅ 点赞:(0)

创建型模式(Creational Patterns)

关注对象的创建机制,提高代码的灵活性和可复用性。

  • 单例模式(Singleton)
    确保一个类只有一个实例,并提供全局访问点。
    示例:数据库连接池、日志系统。

  • 工厂方法模式(Factory Method)
    定义创建对象的接口,但由子类决定实例化哪个类。
    示例:不同品牌的汽车工厂生产各自的汽车。

  • 抽象工厂模式(Abstract Factory)
    创建相关或依赖对象的家族,而无需指定具体类。
    示例:跨平台的 UI 组件库(如 Windows/Mac 的按钮和文本框)。

  • 建造者模式(Builder)
    分步骤构建复杂对象,分离构造过程和表示。
    示例:构造一个包含多种部件的复杂对象(如电脑组装)。

  • 原型模式(Prototype)
    通过复制现有对象来创建新对象,避免重复初始化。
    示例:克隆一个配置好的对象(如游戏中的敌人复制)。


2. 结构型模式(Structural Patterns)

关注类和对象的组合,形成更大的结构。

  • 适配器模式(Adapter)
    将不兼容的接口转换为可兼容的接口。
    示例:将旧系统的 API 适配到新系统。

  • 装饰器模式(Decorator)
    动态地为对象添加额外职责,避免子类爆炸。
    示例:为咖啡添加糖、牛奶等配料。

  • 代理模式(Proxy)
    为其他对象提供一种代理以控制对这个对象的访问。
    示例:虚拟代理(延迟加载图片)、保护代理(权限控制)。

  • 外观模式(Facade)
    提供统一的接口来简化子系统复杂性。
    示例:一键启动电脑(封装了CPU、内存、硬盘等启动过程)。

  • 桥接模式(Bridge)
    将抽象与实现分离,使它们可以独立变化。
    示例:不同形状(圆形、方形)和颜色(红、蓝)的组合。

  • 组合模式(Composite)
    将对象组合成树形结构以表示“部分-整体”层次。
    示例:文件系统中的文件夹和文件。

  • 享元模式(Flyweight)
    通过共享技术高效地支持大量细粒度对象。
    示例:游戏中的重复粒子(如树木、子弹)。


3. 行为型模式(Behavioral Patterns)

关注对象之间的通信和职责分配。

  • 策略模式(Strategy)
    定义一系列算法,封装它们并使它们可互换。
    示例:排序算法(快速排序、冒泡排序)的动态切换。

  • 观察者模式(Observer)
    定义对象间的一对多依赖,当一个对象状态改变时,所有依赖者自动更新。
    示例:事件监听系统、消息订阅。

  • 命令模式(Command)
    将请求封装为对象,支持请求的排队、日志或撤销。
    示例:遥控器按钮绑定不同命令。

  • 模板方法模式(Template Method)
    定义算法的骨架,将某些步骤延迟到子类实现。
    示例:冲泡饮料的固定流程(咖啡 vs 茶)。

  • 迭代器模式(Iterator)
    提供一种方法顺序访问聚合对象的元素,而不暴露其内部表示。
    示例:遍历集合(列表、树等)。

  • 状态模式(State)
    允许对象在内部状态改变时改变其行为。
    示例:电梯的不同状态(运行、停止、故障)。

  • 责任链模式(Chain of Responsibility)
    将请求的发送者和接收者解耦,使多个对象都有机会处理请求。
    示例:审批流程(经理→总监→CEO)。

  • 中介者模式(Mediator)
    用一个中介对象封装一系列对象的交互。
    示例:聊天室中的消息中转。

  • 访问者模式(Visitor)
    在不修改类的前提下为类添加新的操作。
    示例:对文档结构(HTML DOM)的统计分析。

  • 备忘录模式(Memento)
    捕获并外部化对象的内部状态以便后续恢复。
    示例:游戏存档。

  • 解释器模式(Interpreter)
    定义语言的文法,并解释执行。
    示例:正则表达式解析、SQL 解释。


网站公告

今日签到

点亮在社区的每一天
去签到