设计模式系列 - 策略模式
2012-01-04 23:56
435 查看
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。(原文:The Strategy Pattern defines a family of algorithms,encapsulates each one,and makes them interchangeable. Strategy lets the algorithm vary independently from clients that use it.)
应用场景:
1、 多个类只区别在表现行为不同,可以使用Strategy模式,在运行时动态选择具体要执行的行为。
2、 需要在不同情况下使用不同的策略(算法),或者策略还可能在未来用其它方式来实现。(例如FlyBehavior和QuackBehavior的具体实现可任意变化或扩充)
3、 对客户(Duck)隐藏具体策略(算法)的实现细节,彼此完全独立。
代码:
其下定义了算法的各种实现,例如加、减、乘、除等
Operator环境:
使用,即单元测试:
应用场景:
1、 多个类只区别在表现行为不同,可以使用Strategy模式,在运行时动态选择具体要执行的行为。
2、 需要在不同情况下使用不同的策略(算法),或者策略还可能在未来用其它方式来实现。(例如FlyBehavior和QuackBehavior的具体实现可任意变化或扩充)
3、 对客户(Duck)隐藏具体策略(算法)的实现细节,彼此完全独立。
代码:
public interface Stratege { int compute(int firstNumber, int secondNumber); }
其下定义了算法的各种实现,例如加、减、乘、除等
Operator环境:
public class Context { private Stratege stratege; private int firstNumber; private int secondNumber; /** * @param stratege */ public Context(Stratege stratege) { super(); this.stratege = stratege; } public int getFirstNumber() { return firstNumber; } public void setFirstNumber(int firstNumber) { this.firstNumber = firstNumber; } public int getSecondNumber() { return secondNumber; } public void setSecondNumber(int secondNumber) { this.secondNumber = secondNumber; } public int getResult() { return this.stratege.compute(firstNumber, secondNumber); } }
使用,即单元测试:
public class Junit { public static void main(String[] args) { Stratege stratege = new Minas(); Context context = new Context(stratege); context.setFirstNumber(10); context.setSecondNumber(15); System.out.println(context.getResult()); } }
相关文章推荐
- 设计模式系列7---金点子多多的策略模式
- 设计模式实现系列-策略模式-装饰模式-代理模式
- 设计模式系列(一) 策略模式
- 设计模式系列之二策略模式
- 设计模式系列之二:策略模式(Strategy Pattern)
- 设计模式系列——策略模式
- 《设计模式 系列》- 创建型模式 - 策略模式
- 设计模式系列——策略模式
- 设计模式系列:策略模式在战斗结算中的运用
- 设计模式(3)-策略模式(Strategy)
- 设计模式系列1-----C++实现策略模式(Strategy)
- 设计模式(四):策略模式
- 《设计模式--基于C#的工程化实现及扩展》 Security Design Pattern 系列 4 角色模式(Role Pattern)
- 设计模式学习系列十四:策略模式(Strategy)
- 设计模式之Strategy(策略模式系列1)
- 深入理解JavaScript系列(33):设计模式之策略模式详解
- 设计模式系列之一__单例模式(1)__基本定义以及实现
- 设计模式总结篇系列:外观模式(Facade)
- C#设计模式系列 3 ----Strategy 策略模式 之--007大破密码危机
- 设计模式(九):策略模式Strategy(行为型模式)