版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/dc282614966/article/details/88850652
策略设计模式其实就是多态的使用,父类引用指向子类对象。
策略模式的最大特点是使得算法可以在不影响客户端的情况下发生变化,从而改变不同的功能。
策略模式的缺点其实也很明显,在于策略模式把每一种具体的策略都封装成一个实现类,如果策略有很多的话,很显然是实现类就会导致过多,显得臃肿。
案列:
/**
* @author dengchao
* @Description: 策略角色
* @date 2019/3/27
*/
public interface Strategy {
public int cacl(int num1,int num2);
}
/**
* @author dengchao
* @Description: 加法策略
* @date 2019/3/27
*/
public class AddStrategy implements Strategy {
@Override
public int cacl(int num1, int num2) {
return num1+num2;
}
}
/**
* @author dengchao
* @Description: 减法策略
* @date 2019/3/27
*/
public class SubStrategy implements Strategy {
@Override
public int cacl(int num1, int num2) {
return num1-num2;
}
}
/**
* @author dengchao
* @Description: 环境角色
* @date 2019/3/27
*/
public class Environment {
private Strategy strategy;
public Environment(Strategy strategy) {
this.strategy = strategy;
}
public int calculte(int a,int b){
return strategy.cacl(a,b);
}
}
/**
* @author dengchao
* @Description: 测试类
* @date 2019/3/27
*/
public class TestStrategy {
public static void main(String[] args) {
Environment environment = new Environment(new AddStrategy());
int aa = environment.calculte(5,2);
System.out.println(aa);
Environment environment1 = new Environment(new SubStrategy());
int bb = environment1.calculte(9, 2);
System.out.println(bb);
}
}