策略模式(Strategy Pattern)
现在来地说说如何来实现策略模式(锦囊妙计):
1、策略[妙计]实现接口(IStrategy);
2、对应的策略实现类(*Strategy);
3、封装策略的锦囊(StrategyContext);
4、策略执行者(StrategyExecute)。
IStrategy.java
/* *策略实现的接口 */ public interface IStrategy{ //策略执行方法 public void operate(); }
FirstStrategy.java [策略1]
public class FirstStrategy impelements IStrategy{ public void operate(){ system.out.printf("this is the first strategy"); } }
SecondStrategy.java[策略2]
public class SecondStrategyimpelements IStrategy{ public void operate(){ system.out.printf("this is the second strategy"); } }
ThirdStrategy.java[策略3]
public class SecondStrategyimpelements IStrategy{ public void operate(){ system.out.printf("this is the third strategy"); } }
…
策略已经有了,那么现在就需要一个盒子(锦囊)来把这个策略(妙计)给装起来以方便使用,以下就定义这么一个盒子:
-StrategyContext.java[锦囊]public class StrategyContext{ private IStrategy iStrategy; public StrategyContext(IStrategy iStrategy){ this.iStrategy=iStrategy } public void doOperate(){ this.iStrategy.operate(); } }
锦囊已经有了,现在就是缺少使用的人了(也就是执行者)
StrategyExecute.java(执行者)
/** *执行者 */ public class StrategyExecute{ public static void main(String[] args){ StrategyContext context1=new StrategyContext(new FirstStrategy()); context1.doOperate();//output: this is the first strategy StrategyContext context2=new StrategyContext(new SecondStrategy()); context1.doOperate();//output: this is the second strategy StrategyContext context3=new StrategyContext(new ThirdStrategy()); context1.doOperate();//output: this is the third strategy } }