策略模式
2017-04-24 21:22
113 查看
定义一系列算法,把它们一个个封装起来,并且它们可相互替换。本模式使得算法可独立于使用它的客户而变化。
概述
比如,设计一个Army类,该类有一个int数组,数组表示士兵的号码,该类中有一个lineUp()方法,该方法用于将士兵按照号码从小到大排列。但有时候需要将士兵按照从大到小排列,此时要么新增一个方法,或者修改该方法。使用策略模式,可以在不修改原来方法的基础上,修改该方法的具体算法。
模式的结构
策略:策略是一个接口,定义若干个算法标识
具体策略:实现策略接口的类。
上下文:是依赖于策略接口的类,即上下文包含有策略声明的变量。上下文中提供一个方法,该方法委托策略变量调用具体策略所实现的策略接口中的方法。
策略模式的优点
- 上下文和具体策略是松耦合关系
- 满足“开-闭原则”。当增加新的具体策略时,不需要修改上下文类的代码。
-
策略模式适用场景
- 需要使用一个算法的不同变体,比如文件加密和解密
- 一个类定义了多个行为,并且这些行为在这个类的方法中以多个条件语句的形式给出,可以使用策略模式避免大量的条件语句。
- 程序不希望暴露复杂的、与算法相关的数据结构
相关文章推荐
- 设计模式之Strategy(策略)
- 设计模式(20)-策略模式(Strategy)
- 策略模式之C++版本
- 应用泛型的策略模式
- 对象模型--策略、模式、应用 笔记1
- [浪子学编程][MS Enterprise Library]ObjectBuilder之设计模式(一):策略模式
- (22)策略模式-Strategy Pattern-康熙收复台湾-明珠和索额图的不同策略
- 从诸葛亮的三个锦囊妙计谈策略模式
- 《Java与模式》学习笔记之九-----策略模式(Strategy Pattern)
- AspectJ实现设计模式(二)——策略模式
- 设计模式之Strategy(策略)
- 设计模式之Strategy(策略)
- 策略模式之C#版本(原创翻译版本)
- 设计模式实战(一)——使用策略模式(strategy pattern)实现多关键字排序
- Delphi模式编程之策略模式(下)
- 設計模式之Strategy(策略)
- 深入浅出策略模式
- 设计模式——策略模式
- 设计模式之策略模式(Strategy)
- 对象模型--策略、模式、应用 笔记2---选择对象