设计模式 策略模式
本文将介绍设计模式中的策略模式。
一、什么策略模式?
同一个行为往往有不同的实现算法。
策略模式针对一系列算法,将每个算法封装为独立的类,让它们可以相互替换。
通过策略模式,算法可以自由切换和扩展。
二、实现
1. 结构
2. 角色
- Context 环境类:
- 使用算法的角色,它在完成某项行为时可以采用多种策略
- Context 环境类中持有 Strategy 抽象策略类的引用,并提供该引用的设置方法
- Strategy 抽象策略类:
- 是所有 ConcreteStrategy 具体策略类的父类
- 定义了算法的抽象方法
- ConcreteStrategy 具体策略类:
- Strategy 抽象策略类的子类
- 实现了算法
3. 简单示例
Context:
1 |
|
Strategy:
1 |
|
ConcreteStrategy:
1 |
|
三、优缺点
1. 优点
- 可以在不修改原有代码的情况下扩展新算法
- 可以更灵活地切换算法
2. 缺点
- 客户端必须要了解所有策略并作出选择
- 系统中将会有大量地具体策略类
参考
- 《Java 设计模式》