软考 系统架构设计师系列知识点之设计模式(5)

接前一篇文章:软考 系统架构设计师系列知识点之设计模式(4)

所属章节:

老版(第一版)教材

第7章. 设计模式

第2节. 设计模式实例

3. 行为型模式

行为型模式可以影响一个系统的状态和行为流。通过优化状态和行为流转换和修改的方式,可以简化、优化并且提高应用程序的可维护性。行为型模式包括:

  • Chain of Responsibility
  • Command
  • Interpreter
  • Iterator
  • Mediator
  • Memento
  • Observer
  • State
  • Strategy
  • Template Method
  • Visitor

(7)Observer模式

Observer模式为组件向相关接收方广播消息提供了灵活的方法 。该模式定义了对象间一到多的依赖关系,这样当对象改变状态时,将自动通知并更新它所有的依赖对象。

Observer模式的优点如下:

  • 抽象了主体与Observer之间的耦合关系。
  • 支持广播方式的通信。

在以下情况中,应该使用Observer模式:

  • 对一个对象的修改涉及对其它对象的修改,而且不知道有多少对象需要进行相应修改。
  • 对象应该能够在不用假设对象标识的前提下通知其它对象。

(8)State模式

State模式允许对象在内部状态变化时,变更其行为,并且修改其类。

State模式的优点如下:

  • 定位指定状态的行为,并且针对不同状态来划分行为,使状态转换显式进行。

在以下情况中,应该使用State模式:

  • 对象的行为依赖于其状态,并且该对象必须在运行时根据其状态修改其行为。
  • 操作具有大量以及多部分组成的取决于对象状态的条件语句。

(9)Strategy(策略)模式

Strategy模式定义了一组能够用来表示可能行为集合的类。这些行为可以在应用程序中使用,来修改应用程序功能。

一句话概括:策略模式定义一系列算法,并将每个算法封装起来,并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化,其目的是将行为和环境分隔,当出现新的行为时,只需要实现新的策略类。

Strategy模式的优点如下:

  • 另一种子类化方法。
  • 在类自身中定义了每一个行为,这样就减少了条件语句。
  • 更容易扩展模型。在不对应用程序进行代码修改的情况下,该模式具有新的行为。

在以下情况中,应该使用Strategy模式:

  • 许多相关类只是在行为方面有所区别。
  • 需要算法的不同变体。
  • 算法使用客户端未知的数据。

(10)Template Method模式

Template Method模式提供了在不重写方法的前提下,允许子类重载部分方法的方法。在操作中定义算法的框架,将一些步骤由子类实现。该模式可以在不修改算法结构的情况下,让子类重新定义算法的特定步骤。

Template Method模式的优点如下:

  • 代码重用的技术基础。

在以下情况中,应该使用Template Method模式:

  • 想要依次实现算法的不变部分,而使用子类实现算法的可变行为。
  • 当子类间的通用行为需要分解、定位到通用类的时候,这样可以避免代码重复的问题。

(11)Visitor(访问者)模式

Visitor模式提供了一种方便的、可维护的方法来表示在对象结构元素上要进行的操作。该模式允许在不改变操作元素的类的前提下定义一个新操作。

Visitor模式的优点如下:

  • 更容易添加新操作。
  • 集中相关操作并且排除不相关操作。

在以下情况中,应该使用Visitor模式:

  • 对象结构包含许多具有不同接口的对象类,并且想要对这些依赖于具体类的对象进行操作。
  • 定义对象结构的类很少被修改,但想要在此结构之上定义新的操作。
相关推荐
长不大的杨瑞杰6 分钟前
ChatGPT 广告技术栈架构拆解:多轮意图、LLM 工具编排、ANN 召回与拍卖闭环
人工智能·chatgpt·系统架构·推荐系统·广告
是2的10次方啊2 小时前
设计模式与生活⑯:天冷了,出门这身得一层层配
设计模式
艺杯羹16 小时前
Windows原生软件锁设计:从暴力杀进程丢数据到零轮询事件驱动架构
windows·系统架构·开源·开源软件·内存管理·开源协议
心若自由何处是束缚21 小时前
适配器模式:从原理到实战的完整指南
设计模式·适配器模式
是2的10次方啊1 天前
设计模式与生活⑮:看到哪儿了,得有个地方替你记着
设计模式
jktantan1 天前
注解式脱敏:用 Jackson 的 ContextualSerializer 做字段级策略(一)
spring boot·后端·算法·spring cloud·系统架构
2601_967979122 天前
设计模式 - 访问者模式
设计模式·访问者模式·应用场景·对象结构·操作分离
是2的10次方啊2 天前
设计模式与生活⑭:一栋楼,共用一份热
设计模式
艺杯羹3 天前
MCP本地服务集成避坑:从Stdio管道僵死到双向JSON-RPC稳健通信
人工智能·python·ai·系统架构·大语言模型·ai编程·mcp
奇树谦3 天前
Qt Quick 图片加载与 GPU 纹理机制详解:QImage、QQuickTextureFactory、QSGTexture 与异步加载
开发语言·qt·系统架构