Behavioral patterns
如何交互和分配责任
- 策略允许在运行时动态选择一系列算法中的一种。
- Template method将算法的骨架定义为一个抽象类,允许它的子类提供具体的行为。
- 迭代器按顺序访问对象的元素,而不公开其底层表示。
Strategy 整体地替换算法
- Problem: 针对特定任务存在多种算法,调用者需要根据上下文环境动 态的选择和切换。
- Example: 对客户列表进行排序(冒泡排序、合并排序、快速排序)
- Solution:定义一个算法的 接口,每个算法用一个类来实现,客户端针对接口编写程序。
Advantage
- 易于扩展的新算法实现
- 分离算法从客户端上下文
Iterator Pattern
- Problem: 客户端需要以统 一的、与元素类型无关的方式访问容器中的所有元素
- Solution: 一种面向迭代的策略模式
- Consequences: 隐藏了容器的内部 实现 ; 用统一的接口 支持多种遍历策略
Advantage
- 易于更改容器类型
- 便于程序各部分之间的通信
Pattern structure
- 定义迭代器接口
- 实现迭代功能
- 获取迭代器对象的接口
- 实现迭代器对象的获取