当前所在位置:珠峰网资料 >> 计算机 >> 软件水平 >> 正文
2015年软考系统架构设计师学习笔记第七章(3)
发布时间:2010/12/4 22:26:38 来源:城市学习网 编辑:ziteng
  7.2.3 行为性模式
  行为性模式 影响 系统的 状态、行为流。
  简化、优化 并且 提高应用程序的 可维护性。
  1、Chain of Responsibility 模式
  在系统中建立一个链,在首先接收到它的级别处 被处理,或者定位到可以处理它的对象。
  优点:
  降低了耦合度。
  增加面向对象制定责任的 灵活性。
  类的集合可以作为一个整体。
  以下情况中,应该使用 Chain of Responsibility 模式:
  多个对象可以处理一个请求,而其处理器却是未知的。
  在不指定确切的 请求接受对象的情况下,向几个对象中的 一个 发送请求。
  动态地指定能够处理请求的对象集。
  2、Command 模式
  在对象中封装了请求。
  优点:
  将调用操作的对象 与 知道如何完成该操作的对象 相分离。
  更容易添加新指令,因为不用修改已有类。
  以下情况中,应该使用 Command 模式:
  要通过执行的动作 来 参数化对象。
  在不同的时间 指定、排序、执行 请求。
  必须支持 Undo、日志记录 或 事务。
  3、Interpreter 模式
  解释定义其语法表示的语言,提供了语句解释器。
  优点:
  容易修改并扩展语法。
  更容易实现语法。
  以下情况中,应该使用 Interpreter 模式:
  语言的语法比较简单。
  效率并不是最主要的问题。
  4、Iterator 模式
  为集合中的有序访问提供了一致的方法,而该集合是独立于基础集合。
  优点:
  支持集合的不同遍历。
  简化了集合的接口。
  以下情况中,应该使用 Iterator 模式:
  不开放集合对象内部表示的前提下,访问集合对象内容。
  支持集合对象的多重遍历。
  为遍历集合中的不同结构 提供了统一的接口。
  5、Mediator 模式
  通过引入一个能够管理对象间消息分布的对象,简化了系统中对象间的通信。提高了对象间的松耦合度,还可以独立地 改变 其间的交互。
  优点:
  去除对象间的影响。
  简化了对象间协议。
  集中化了控制。
  由于不再需要直接互传消息,单个组件变得更加简单,而且容易处理。
  由于不再需要 包含逻辑 来处理组件间的通信,组件变得更加通用。
  以下情况中,应该使用 Mediator 模式:
  对象集合需要以 一个定义规范但复杂的方式 进行通信。 [NextPage]   6、Memento 模式
  保持对象状态的“快照”(snapshot),对象可以在不向外界公开其内容的情况下 返回到它的最初状态。
  优点:
  保持封装的完整性。
  简化了返回到初始状态所需的操作。
  以下情况中,应该使用 Memento 模式:
  必须保存对象状态的快照,恢复状态。
  7、Observer 模式
  定义了对象间 一到多 的依赖关系,当对象改变状态时,将自动通知 并 更新它所有的依赖对象。
  优点:
  抽象了主题与 Observer 之间的耦合关系。
  支持广播方式通信。
  以下情况中,应该使用 Observer 模式:
  对一个对象的修改 涉及对其他对象的修改,而且不知道有多少对象 需要进行相应修改。
  对象应该能够 在不同假设对象标识的前提下 通知其它对象。
  8、State 模式
  对象在内部状态变化时,变更其行为,并且修改其类。
  优点:
  针对不同状态来划分行为,使状态转换显式进行。
  9、Strategy 模式
  定义了一组能够用来表示 可能行为集合的类。这些行为 可以在应用程序中使用,来修改应用程序功能。
  优点:
  另一种子类化方法。
  在类自身中定义了 每一个行为,减少了条件语句。
  更容易扩展模型。
  以下情况中,应该使用 Strategy 模式:
  许多相关类 只是在行为方面有所区别。
  需要算法的不同变体。
  算法使用客户端未知的数据。
  10、Template Method 模式
  不重写方法的前提下 允许 子类重载部分方法 的方法。
  将一些步骤由子类实现。
  优点:代码重用的基础技术。
  以下情况中,应该使用 Template Method 模式:
  一次实现算法的不变部分,子类实现算法的可变行为。
  11、Visitor 模式
  不改变操作元素的类 的前提下 定义一个新操作。
  优点:
  容易添加新操作。
  集中相关 排除不相关 操作。
  以下情况中,应该使用 Visitor 模式:
  包含许多具有不同接口的对象类,并且想要对这些 依赖具体类的对象进行操作。
  定义对象结构的类很少被修改,但想要在此结构上定义新的操作。
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved