您的位置:首页 > 职场人生

设计模式系列 - 策略模式

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)隐藏具体策略(算法)的实现细节,彼此完全独立。

代码:

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());
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  职场 休闲 策略模式