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

所属章节:

老版(第一版)教材

第7章. 设计模式

        第2节. 设计模式实例

3. 行为型模式

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

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

(1)Chain of Responsibility模式

Chain of Responsibility模式可以在系统中建立一个链,这样消息可以在首先接收到它的级别被处理,或者可以定位到可以处理它的对象

Chain of Responsibility模式的优点如下:

  • 降低了耦合度。
  • 增加向对象指定责任的灵活性。
  • 由于在一个类中产生的事件可以被发送到组成中的其它类处理器上,类的集合可以作为一个整体。

在以下情况中,应该使用Chain of Responsibility模式:

  • 多个对象可以处理一个请求,而其处理器却是未知的。
  • 想要在不指定确切的请求接收对象的情况下,向几个对象中的一个发送请求。
  • 可以动态地指定能够处理请求的对象集。

(2)Command模式

Command模式在对象中封装了请求,这样就可以保存命令,将该命令传递给方法以及像任何其它对象一样返回该命令。Command模式的优点如下:

  • 将调用操作的对象与知道如何完成该操作的对象相分离。
  • 更容易添加新命令,因为不用修改已有类。

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

  • 想要通过要执行的动作来参数化对象。
  • 要在不同的时间指定、排序以及执行请求。
  • 必须支持Undo、日志记录或事务。

(3)Interpreter模式

Interpreter模式可以解释定义其语法表示的语言,还提供了用表示来解释语言中的语句的解释器

Interpreter模式的优点如下:

  • 容易修改并扩展语法。
  • 更容易实现语法。

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

  • 语言的语法比较简单。
  • 效率并不是最主要的问题。

(4)Iterator模式

Iterator模式为集合中的有序访问提供了一致的方法,而该集合是独立于基础集合、并与之相分离的。

Iterator模式的优点如下:

  • 支持集合的不同遍历。
  • 简化了集合的接口。

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

  • 在不开放集合对象内部表示的前提下,访问集合对象内容。
  • 支持集合对象的多重遍历。
  • 为遍历集合中的不同结构提供了统一的接口。

(5)Mediator模式

Mediator模式通过引入一个能够管理对象间消息分布的对象,简化了系统中对象间的通信。该模式可以减少对象之间的相互引用,从而提高了对象间的共耦合度,并且它还可以独立地改变其间的交互。

Mediator模式的优点如下:

  • 去除对象间的影响。
  • 简化了对象间协议。
  • 集中化了控制。
  • 由于不再需要直接互传消息,单个组件变得更加简单,而且容易处理。
  • 由于不再需要包含逻辑来处理组件间的通信,组件变得更加通用。

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

  • 对象集合需要以一个定义规范但复杂的方式进行通信。
  • 想要在不使用子类的情况下自定义分布在几个对象之间的行为。

(6)Memento模式

Memento模式可以保持对象状态的“快照(snapshot)”,这样对象可以在不向外界公开其内容的情况下返回到它的最初状态

Memento模式的优点如下:

  • 保持封装的完整。
  • 简化了返回到初始状态所需的操作。

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

  • 必须保存对象状态的快照,这样以后就可以恢复状态。
  • 使用直接接口来获得状态可能会公开对象的细节,从而破坏对象的封装性。
10-26 05:13