策略模式

来源:互联网 发布:淘宝店铺手机登陆 编辑:程序博客网 时间:2024/04/30 15:22
/* * TreeSet TreeMap中比较器的传入就是典型的策略模式 */public class StrategyTest //策略模式测试类{public static void main(String[] args){Environment st = new Environment(new AddStrategy());System.out.println(st.calculate(10,30));Environment st1 = new Environment(new SubStrategy());System.out.println(st1.calculate(10,30));Environment st2 = new Environment(new MulStrategy());System.out.println(st2.calculate(10,30));Environment st3 = new Environment(new DivStrategy());System.out.println(st3.calculate(10,30));}} interface Strategy //抽象策略角色{  public int cal(int a,int b);}class Environment //环境角色{private Strategy strategy;  public Environment(Strategy strategy)  {  this.strategy = strategy;  }public Strategy getStrategy(){return strategy;}public void setStrategy(Strategy strategy){this.strategy = strategy;}    public int calculate(int a,int b)    {    return strategy.cal(a,b);       }}class AddStrategy implements Strategy //具体策略角色{@Overridepublic int cal(int a, int b){return a+b;}}class SubStrategy implements Strategy{@Overridepublic int cal(int a, int b){return a-b;}}class MulStrategy implements Strategy{@Overridepublic int cal(int a, int b){return a*b;}}class DivStrategy implements Strategy{@Overridepublic int cal(int a, int b){return a/b;}}