package com.lee;
public interface Strategy
{
public int calculate(int a , int b);
}
package com.lee;
public class AddStrategy implements Strategy
{
public int calculate(int a, int b)
{
return a + b;
}
}
package com.lee;
public class SubtraceStrategy implements Strategy
{
public int calculate(int a, int b)
{
return a - b;
}
}
package com.lee;
public class MultiplyStrategy implements Strategy
{
public int calculate(int a, int b)
{
return a * b;
}
}
package com.lee;
public class DivideStrategy implements Strategy
{
public int calculate(int a, int b)
{
return a / b;
}
}
package com.lee;
public 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.calculate(a, b);
}
}
package com.lee;
public class Client
{
public static void main(String[] args)
{
AddStrategy addStrategy = new AddStrategy(); //加法
Environment environment = new Environment(addStrategy);
System.out.println(environment.calculate(3,4));
SubtraceStrategy subtraceStrategy = new SubtraceStrategy();//减法
environment.setStrategy(subtraceStrategy);
System.out.println(environment.calculate(3,4));
MultiplyStrategy multipleStrategy = new MultiplyStrategy();//乘法
environment.setStrategy(multipleStrategy);
System.out.println(environment.calculate(3,4));
DivideStrategy divideStrategy = new DivideStrategy();//除法
environment.setStrategy(divideStrategy);
System.out.println(environment.calculate(3,4));
}
}