问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

深入解析!23种设计模式的核心精髓与应用场景

创作时间:
作者:
@小白创作中心

深入解析!23种设计模式的核心精髓与应用场景

引用
CSDN
1.
https://blog.csdn.net/weixin_46453743/article/details/145781634

以下是GoF提出的23种设计模式的简单介绍,这些模式按功能分类,分别属于创建型模式、结构型模式和行为型模式:

创建型模式 (Creational Patterns)

  1. 工厂方法模式 (Factory Method)
  • 意图:定义一个创建对象的接口,让子类决定实例化哪一个类。
  • 使用场景:当无法提前知道具体对象的类型时使用。
  1. 抽象工厂模式 (Abstract Factory)
  • 意图:提供一个接口,用于创建一系列相关或相互依赖的对象,而不指定具体类。
  • 使用场景:创建相关对象的系统,需要支持多个产品系列。
  1. 建造者模式 (Builder)
  • 意图:将一个复杂对象的构建与表示分离,使同样的构建过程可以创建不同的表示。
  • 使用场景:构造具有多个部件的复杂对象,且对象的创建过程稳定。
  1. 原型模式 (Prototype)
  • 意图:通过复制现有的实例来创建新的对象。
  • 使用场景:需要创建相似对象时,减少重复创建开销。
  1. 单例模式 (Singleton)
  • 意图:确保一个类只有一个实例,并提供全局访问点。
  • 使用场景:全局唯一实例的需求,如配置管理类、资源管理类等。

结构型模式 (Structural Patterns)

  1. 适配器模式 (Adapter)
  • 意图:将一个类的接口转换成客户端期望的另一种接口,使不兼容的类能协同工作。
  • 使用场景:连接接口不兼容的类或对象。
  1. 桥接模式 (Bridge)
  • 意图:将抽象部分与实现部分分离,使它们可以独立变化。
  • 使用场景:对象需要多个维度的变化,同时保持独立变化的可能性。
  1. 组合模式 (Composite)
  • 意图:将对象组合成树形结构,使得客户端可以一致地处理单个对象和组合对象。
  • 使用场景:表示“部分-整体”结构的场景,如文件系统的文件夹结构。
  1. 装饰器模式 (Decorator)
  • 意图:动态地给对象添加额外职责。
  • 使用场景:不想通过继承来扩展功能,或需要动态增加功能时。
  1. 外观模式 (Facade)
  • 意图:为子系统中的一组接口提供一个一致的界面,使子系统更易用。
  • 使用场景:简化复杂系统的接口,提供统一的操作入口。
  1. 享元模式 (Flyweight)
  • 意图:通过共享技术实现大量细粒度对象的高效支持。
  • 使用场景:创建大量相似对象时,节省内存。
  1. 代理模式 (Proxy)
  • 意图:为某个对象提供一个代理,以控制对该对象的访问。
  • 使用场景:远程代理、虚拟代理和保护代理等。

行为型模式 (Behavioral Patterns)

  1. 责任链模式 (Chain of Responsibility)
  • 意图:使多个对象有机会处理请求,从而避免请求的发送者和接收者之间的耦合。
  • 使用场景:多个对象可以处理请求时,让请求在对象间传递。
  1. 命令模式 (Command)
  • 意图:将请求封装成对象,以便使用不同的请求、队列或日志来参数化对象。
  • 使用场景:需要支持撤销、排队或日志记录等功能。
  1. 解释器模式 (Interpreter)
  • 意图:为语言创建解释器,用于解释该语言的语法和语句。
  • 使用场景:设计一个特定领域语言的解释器或执行器。
  1. 迭代器模式 (Iterator)
  • 意图:提供一种方法顺序访问一个集合对象的元素,而不暴露其内部表示。
  • 使用场景:遍历集合的不同实现,提供统一的访问接口。
  1. 中介者模式 (Mediator)
  • 意图:用一个中介对象封装一系列对象之间的交互,使对象不必显式引用彼此,降低耦合。
  • 使用场景:系统中对象之间存在复杂交互时,使用中介者来简化关系。
  1. 备忘录模式 (Memento)
  • 意图:在不破坏封装的前提下,捕获和恢复对象的内部状态。
  • 使用场景:需要保存对象的历史状态,且以后可能恢复。
  1. 观察者模式 (Observer)
  • 意图:定义对象间的一种一对多的依赖关系,状态改变时自动通知所有依赖的对象。
  • 使用场景:事件驱动的系统、发布-订阅模型。
  1. 状态模式 (State)
  • 意图:允许对象在其内部状态发生改变时,改变它的行为。
  • 使用场景:对象的行为依赖于状态,并且需要在运行时改变状态。
  1. 策略模式 (Strategy)
  • 意图:定义一系列算法,将每个算法封装起来,并使它们可以互相替换。
  • 使用场景:需要在运行时切换算法。
  1. 模板方法模式 (Template Method)
  • 意图:定义算法的框架,将某些步骤延迟到子类。
  • 使用场景:不同实现间存在共同步骤,但个别步骤不同时。
  1. 访问者模式 (Visitor)
  • 意图:表示一个作用于某对象结构的操作,可在不更改对象类的情况下定义新操作。
  • 使用场景:需要对一系列不同类型的对象执行操作,但又不想修改对象的类结构。

这些设计模式提供了应对不同软件设计问题的可复用解决方案,合理应用这些模式有助于提高系统的扩展性、可维护性和灵活性。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号