王吉元-NWPU

导航

 

 

public Context(String strategyType)

{

switch(strategyType)

{

case "算法A":

     strategy=new ContextStrategyA();

     break;

case "算法B":

     strategy=new ContextStrategyB();

     break;

...............

}

}

 

 

DF对策略模式的定义是这样的:它定义了算法家族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化不会影响到使用算法的客户(main函数)。

 

abstract class Strategy

{

public abstract void AlgorithmInterface();

}

 

 

 

class ConcreteStratrgyA extends Strategy

{

 @override

public void AlgorithmInterface()

{

   //算法A的具体实现。

}

}

 

 

 

class ConcreteStrategyB extends Strategy

{

 @override

public void AlgorithmInterface()

{

  //算法B的具体实现

}

}

 

 

 

class Context

{

Strategy strategy;

public Context(Strategy strategy)

{

this.strategy=strategy;

}

public void ContextInterface)

{

strategy.AlgorithmInterface();

}

}

 

在Context类的构造方法中可以使用简单工厂模式,实现策略模式和简单工厂模式的结合。

 

public static void main(String[] args)

{

Context context;

context=new Context(new ContextStrategyA());

context.ContextInterface();



context=new Context(new ContextStrategyB());

context.ContextInterface();

}

 

posted on 2013-05-03 16:29  王吉元  阅读(154)  评论(0编辑  收藏  举报