现在来地说说如何来实现策略模式(锦囊妙计):
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
}
}