分享免费的编程资源和教程

网站首页 > 技术教程 正文

设计模式分类 设计模式分类和作用

goqiw 2024-10-06 08:13:54 技术教程 18 ℃ 0 评论

设计模式分为三大类:创建型模式、结构型模式、行为型模式。每个分类的核心思想、目的、意义和使用场景各不相同,下面是对这些分类的详细解释:

1. 创建型模式

核心思想: 创建型模式处理对象的创建过程,旨在将对象的创建与使用分离,提供一种灵活的创建对象的方式,避免直接使用new关键字进行实例化。

目的: 控制对象创建的复杂性,通过提供灵活的创建对象方式,减少代码的耦合性,使得代码更加灵活和可扩展。

意义:

  • 隐藏对象创建的具体过程,提供更为灵活的对象生成机制。
  • 通过抽象化对象的创建,减少代码的重复性,提高系统的可维护性和可扩展性。

使用场景:

  • 当对象创建过程较为复杂,且需要灵活控制时。
  • 当对象的创建需要依赖于特定的配置或环境时。
  • 当希望系统独立于对象创建的方式或过程时。

代表模式:

  1. 工厂方法模式: 通过定义一个接口或抽象类来创建对象,而不是在代码中直接使用new关键字。
  2. 抽象工厂模式: 提供一个接口来创建一系列相关或相互依赖的对象,而无需指定它们的具体类。
  3. 单例模式: 确保某个类只有一个实例,并提供一个全局访问点。
  4. 原型模式: 通过复制已有的实例来创建对象,而不需要通过类来实例化新对象。
  5. 建造者模式: 将复杂对象的创建过程与其表示分离,使得同样的创建过程可以创建不同的对象。

2. 结构型模式

核心思想: 结构型模式关注类和对象的组合,通过将对象和类结合在一起,形成更大的结构,以简化代码结构和实现对象之间的交互。

目的: 通过合理的类和对象组合,创建复杂的系统结构,简化系统的设计和实现,使得系统更易于扩展和维护。

意义:

  • 提高代码的可复用性,减少冗余代码。
  • 优化对象之间的关系,使得系统更易于理解和维护。
  • 提供灵活的代码结构,能够应对系统的扩展需求。

使用场景:

  • 当系统需要通过不同对象的组合来实现复杂功能时。
  • 当希望系统的各个部分可以独立变化且组合灵活时。
  • 当希望通过继承或组合来扩展现有系统的功能时。

代表模式:

  1. 适配器模式: 将一个类的接口转换为客户端所期待的另一种接口,从而使得原本因接口不兼容而无法一起工作的类可以协同工作。
  2. 桥接模式: 将抽象部分与它的实现部分分离,使它们可以独立变化。
  3. 组合模式: 通过将对象组合成树形结构来表示部分与整体的层次结构,使得客户端可以以统一的方式处理单个对象和组合对象。
  4. 装饰器模式: 动态地向对象添加额外的职责,而不影响其他对象的功能。
  5. 外观模式: 提供一个统一的接口,用来访问子系统中的一群接口,从而简化了客户端与复杂系统的交互。
  6. 享元模式: 通过共享细粒度对象来减少内存使用,适用于大量相似对象的场景。
  7. 代理模式: 为其他对象提供一种代理,以控制对这个对象的访问。

3. 行为型模式

核心思想: 行为型模式关注类和对象之间的交互与职责分配,定义了类和对象之间的通信方式,旨在解决对象间职责分配和行为划分的问题。

目的: 通过定义对象之间的通信和协作方式,分离对象的职责,使系统行为更加灵活和可扩展。

意义:

  • 降低对象之间的耦合度,使得对象可以独立变化。
  • 使得对象之间的职责分配更加清晰,提升系统的可读性和可维护性。
  • 提供更加灵活的行为实现机制,方便系统的扩展和修改。

使用场景:

  • 当系统中需要定义不同对象之间的交互和职责分配时。
  • 当希望通过对象间的协作来实现复杂行为时。
  • 当系统的行为随着对象状态变化而变化时。

代表模式:

  1. 责任链模式: 将请求沿着处理者链进行传递,直到某一对象处理它为止,避免了请求的发送者和接收者之间的耦合。
  2. 命令模式: 将一个请求封装成一个对象,从而使用户可以使用不同的请求、队列或者日志来参数化其他对象,并支持可撤销操作。
  3. 解释器模式: 给定一种语言,定义它的文法表示,并设计一个解释器来处理语言中的表达式。
  4. 迭代器模式: 提供一种顺序访问聚合对象中的各个元素的方法,而无需暴露其内部表示。
  5. 中介者模式: 用一个中介对象来封装一系列对象之间的交互,使对象之间不需要直接相互引用,从而减少它们之间的耦合。
  6. 备忘录模式: 在不破坏封装的前提下,捕获并保存一个对象的内部状态,以便可以在以后恢复到原先的状态。
  7. 观察者模式: 定义对象间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知并自动更新。
  8. 状态模式: 允许对象在内部状态改变时改变其行为。
  9. 策略模式: 定义一系列算法,并将它们封装起来,使得它们可以互换。
  10. 模板方法模式: 定义一个操作中的算法框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重新定义算法的某些步骤。
  11. 访问者模式: 表示一个作用于某对象结构中的各元素的操作,使得可以在不改变各元素类的前提下定义作用于这些元素的新操作。

总结

  • 创建型模式: 重点在于对象的创建,解决对象创建的复杂性,提高对象的可扩展性。
  • 结构型模式: 重点在于对象之间的组合,优化系统的结构,提高代码的可复用性和灵活性。
  • 行为型模式: 重点在于对象之间的职责分配和交互,降低系统的耦合度,提高系统行为的灵活性。

每种模式都能在特定场景下提高系统的可维护性、可扩展性和灵活性,使得设计更加符合面向对象编程的思想。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表