架构设计系列(四):设计模式

一、概述

  设计模式是软件开发中常见问题的可重用解决方案,它们为构建更好的软件提供了蓝图。它们不是具体的代码,而是一种设计思想或模板,可以帮助开发人员更高效地构建可维护、可扩展的软件。

二、开发必须掌握的18个关键的设计模式

在这里插入图片描述

2.1 设计模式的分类

  • 创建型模式(Creational Patterns)
    解决对象创建的问题,提供灵活的对象创建机制。
  • 结构型模式(Structural Patterns)
    解决类和对象的组合问题,提供灵活的结构设计。
  • 行为型模式(Behavioral Patterns)
    解决对象之间的职责分配和通信问题。

2.2 创建型模式

  • 抽象工厂模式(Abstract Factory)
    Family Creator(家族创造者)。
      提供一个接口,用于创建一系列相关或依赖的对象,而无需指定具体类。
      其使用于需要创建一组相关对象的场景,如跨平台的 UI 组件。
  • 建造者模式(Builder)
    Lego Master(乐高大师)。
      将一个复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。
      适用于需要分步骤构建复杂对象的场景,如生成复杂的文档或配置。
  • 原型模式(Prototype)
    Clone Maker(克隆制造者)。
      通过复制现有对象来创建新对象,而不是通过实例化类。
      其适用于需要高效创建相似对象的场景,如游戏中的敌人生成。
  • 单例模式(Singleton)
    One and Only(独一无二)
      确保一个类只有一个实例,并提供全局访问点。
      其适用于需要全局唯一实例的场景,如配置管理、日志记录。

2.3 结构型模式

  • 适配器模式(Adapter)
    Universal Plug(万能插头)
      将一个类的接口转换成客户端期望的另一个接口。
      其适用于集成不兼容接口的系统,如第三方库的集成。
  • 桥接模式(Bridge)
    Function Connector(功能连接器)
      将抽象部分与实现部分分离,使它们可以独立变化。
      其适用于需要将抽象与实现解耦的场景,如跨平台的图形渲染。
  • 组合模式(Composite)
    Tree Builder(树构建者)
      将对象组合成树形结构以表示“部分-整体”的层次结构。
      适用于需要处理树形结构的场景,如文件系统、UI 组件。
  • 装饰器模式(Decorator)
    Customizer(定制器)
      动态地给对象添加额外的职责,而不改变其核心功能。
      适用于需要动态扩展对象功能的场景,如日志记录、权限检查。
  • 外观模式(Facade)
    One-Stop-Shop(一站式服务)
      提供一个统一的接口,简化复杂系统的使用。
      适用于需要简化复杂系统接口的场景,如框架的封装。
  • 享元模式(Flyweight)
    Space Saver(空间节省者)
      通过共享细粒度对象来节省内存。
      适用要高效管理大量相似对象的场景,如文本编辑器中的字符渲染。
  • 代理模式(Proxy)
    Stand-In Actor(替身演员)
      为其他对象提供一个代理,以控制对这个对象的访问。
      需要控制对象访问的场景,如延迟加载、权限控制。

2.4 行为型模式

  • 责任链模式(Chain of Responsibility)
    Request Relay(请求接力)
      将请求的发送者和接收者解耦,使多个对象都有机会处理请求。
      适用于需要动态处理请求的场景,如事件处理、审批流程。

  • 命令模式(Command)
    Task Wrapper(任务包装器)
      将请求封装为对象,从而使你可以用不同的请求对客户进行参数化。
      适用于需要支持撤销、重做或日志记录的场景,如文本编辑器的操作历史。

  • 迭代器模式(Iterator)
    Collection Explorer(集合探索者)
      提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部表示。
      适用于需要遍历集合的场景,如列表、树形结构。

  • 中介者模式(Mediator)
    Communication Hub(通信枢纽)
      定义一个中介对象来封装一组对象之间的交互,从而减少对象之间的直接依赖。
      适用于需要简化对象间复杂交互的场景,如聊天室、事件总线。

  • 备忘录模式(Memento)
    Time Capsule(时间胶囊)
      在不破坏封装性的前提下,捕获并外部化一个对象的内部状态,以便以后恢复。
      适用于需要实现撤销、恢复功能的场景,如文本编辑器的撤销操作。

  • 观察者模式(Observer)
    News Broadcaster(新闻广播员)
      定义对象间的一对多依赖关系,当一个对象改变状态时,所有依赖它的对象都会收到通知。
      适用于需要实现事件驱动的场景,如 GUI 框架、消息通知系统。

  • 访问者模式(Visitor)
    Skillful Guest(技艺高超的客人)
      在不改变类的前提下,定义新的操作。
      适用于需要在不修改类的情况下扩展其功能的场景,如编译器中的语法树遍历。

三、总结

  设计模式是软件开发中的宝贵工具,它们提供了解决常见问题的标准化方法。通过合理使用设计模式,可以提高代码的质量、可维护性和可扩展性。以下是这些设计模式的分类和核心思想:

模式分类核心思想
抽象工厂模式创建型创建一组相关对象。
建造者模式创建型分步骤构建复杂对象。
原型模式创建型通过复制现有对象创建新对象。
单例模式创建型确保一个类只有一个实例。
适配器模式结构型转换接口以兼容不同类。
桥接模式结构型将抽象与实现分离。
组合模式结构型构建树形结构以表示部分-整体关系。
装饰器模式结构型动态扩展对象功能。
外观模式结构型提供简化接口以封装复杂系统。
享元模式结构型共享细粒度对象以节省内存。
代理模式结构型控制对对象的访问。
责任链模式行为型将请求传递给多个处理者。
命令模式行为型将请求封装为对象。
迭代器模式行为型提供遍历集合的方法。
中介者模式行为型封装对象间的交互。
备忘录模式行为型捕获并恢复对象状态。
观察者模式行为型定义对象间的一对多依赖关系。
访问者模式行为型在不修改类的情况下扩展其功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Resean0223

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值