政策設計模式其實就是多态的使用,父類引用指向子類對象。
政策模式的最大特點是使得算法可以在不影響用戶端的情況下發生變化,進而改變不同的功能。
政策模式的缺點其實也很明顯,在于政策模式把每一種具體的政策都封裝成一個實作類,如果政策有很多的話,很顯然是實作類就會導緻過多,顯得臃腫。
案列:
/**
* @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);
}
}