设计模式学习笔记(14)——策略模式
2015-05-20 22:27
423 查看
一、模式定义 策略模式就是定义了算法族,分别封装起来,让他们之间可以互相转换,此模式让该算法的变化,不会影响到使用算法的用户。我们可以定义一些独立的类来封装不同的算法,每一个独立的类对应着一个具体的算法实现,在这里我们就将这里每一个独立的类称之为一个策略。二、模式结构
三、模式实现
Strategy : 定义所有算法的公共接口(AlgorithmInterface)。Context 使用这个接口去调用 ConcreteStrategy 定义的具体算法。
算法A
算法B
算法C
[b]四、使用场景[/b] 1、如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为。
2、一个系统需要动态地在几种算法中选择一种。
3、如果一个对象有很多的行为,如果不用恰当的模式,这些行为就只好使用多重的条件选择语句来实现
三、模式实现
Strategy : 定义所有算法的公共接口(AlgorithmInterface)。Context 使用这个接口去调用 ConcreteStrategy 定义的具体算法。
abstract class Strategy { public abstract void AlgorithmInterface(); }ConcreteStrategy : 实现 Strategy 中的算法接口(AlgorithmInterface)。
class ConcreteStrategyA extends Strategy { @Override public void AlgorithmInterface() { System.out.println("算法A"); } } class ConcreteStrategyB extends Strategy { @Override public void AlgorithmInterface() { System.out.println("算法B"); } } class ConcreteStrategyC extends Strategy { @Override public void AlgorithmInterface() { System.out.println("算法C"); } }Context : 用一个 ConcreteStrategy 来配置。维护一个对 Strategy 对象的引用。
class Context { Strategy strategy; public Context(Strategy strategy) { this.strategy = strategy; } public void ContextInterface() { strategy.AlgorithmInterface(); } }测试代码
public class StrategyPattern { public static void main(String[] args) { Context context1 = new Context(new ConcreteStrategyA()); context1.ContextInterface(); Context context2 = new Context(new ConcreteStrategyB()); context2.ContextInterface(); Context context3 = new Context(new ConcreteStrategyC()); context3.ContextInterface(); } }运行结果
算法A
算法B
算法C
[b]四、使用场景[/b] 1、如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为。
2、一个系统需要动态地在几种算法中选择一种。
3、如果一个对象有很多的行为,如果不用恰当的模式,这些行为就只好使用多重的条件选择语句来实现
相关文章推荐
- java学习笔记-设计模式14(策略模式)
- 设计模式学习笔记七:策略模式
- 【设计模式学习笔记】 之 策略模式
- 【学习笔记】设计模式-策略模式
- 再起航,我的学习笔记之JavaScript设计模式20(策略模式)
- 设计模式-策略模式学习笔记
- 【学习笔记javascript设计模式与开发实践(策略模式)----5】
- 设计模式学习笔记-策略模式
- 步步为营 .NET 设计模式学习笔记 三、Strategy(策略模式)
- 设计模式学习笔记——策略模式
- 设计模式学习笔记七:策略模式
- 学习笔记_Java_day12_设计模式MVC(13).JavaWeb的三层框架(14)
- HeadFirst 设计模式学习笔记1--策略模式
- 设计模式 学习笔记(1)简单工厂模式、策略模式
- HeadFirst 设计模式学习笔记1--策略模式
- 【HeadFirst 设计模式学习笔记】1.策略模式
- 设计模式学习笔记(六)之策略模式(Strategy)
- 设计模式学习笔记之策略模式
- 设计模式学习笔记之策略模式
- OPENCV学习笔记3-1_算法设计中使用策略模式