设计模式之策略模式
2017-05-05 14:35
225 查看
概述:定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化
角色:
Strategy 定义所有支持的算法的公共接口。Context使用这个接口来调用某ConcreteStrategy定义的算法
ConcreteStrategy 以Strategy接口实现某具体算法
Context 用一个ConcreteStrategy对象来配置。 维护一个对Strategy对象的引用。可定义一个接口来让Stategy访问它的数据
类图:
实现:
算法公共接口
算法实现:
Context
测试
打印:
做减法
角色:
Strategy 定义所有支持的算法的公共接口。Context使用这个接口来调用某ConcreteStrategy定义的算法
ConcreteStrategy 以Strategy接口实现某具体算法
Context 用一个ConcreteStrategy对象来配置。 维护一个对Strategy对象的引用。可定义一个接口来让Stategy访问它的数据
类图:
实现:
算法公共接口
/** * 模拟算法 */ interface MathCopy { public void method(); }
算法实现:
public class Add implements MathCopy { @Override public void method() { System.out.println("做加法"); } }
public class Mins implements MathCopy { @Override public void method() { System.out.println("做减法"); } }
Context
public class Context { MathCopy mathCopy; public Context(MathCopy mathCopy){ this.mathCopy = mathCopy; } public void doIt(){ this.mathCopy.method(); } }
测试
public class testStrategy { public static void main(String[] args) { MathCopy m = new Mins(); Context context = new Context(m); context.doIt(); } }
打印:
做减法
相关文章推荐
- 设计模式之Strategy(策略)
- 设计模式之策略模式(strategy)--游戏角色使用武器
- [设计模式] 23.Strategy 策略模式
- [★] .NET 偶尔连接的设计策略 -联机状态- 脱机模式- 数据同步
- 设计模式袖珍版 连续转载之 - Strategy(策略)
- 乐在其中设计模式(C#) - 策略模式(Strategy Pattern)
- 设计模式随笔系列:鸭子-策略模式(Strategy)[原]
- 设计模式之Strategy(策略)
- 设计模式之策略模式探讨初步[引]
- 设计模式随笔系列:鸭子-策略模式(Strategy)[转]
- 设计模式之Strategy(策略)
- Java设计模式学习之一---策略模式
- AspectJ实现设计模式(二)——策略模式
- 设计模式之策略模式探讨初步
- 设计模式之Strategy(策略)
- 设计模式之Strategy(策略)
- 设计模式与泡mm的关系之strategy策略模式及再思考
- 设计模式之Strategy(策略)
- 设计模式随笔系列:鸭子-策略模式(Strategy)
- 设计模式(20)-策略模式(Strategy)