策略模式是针对一组算法,将每一个算法封装到具有共同借口的独立类中,从而使得它们可以相互交替。
这个模式涉及到三个角色
1.环境角色(context)
2.抽象策略角色(strategy)
3.具体策略角色(concretestrategy) 下面就用一个简单加,减,乘,除实例。
//创建抽象策略
public interface Strategy(){
//计算的方法
public double Calculation(double num1,double num 2);
}
//创建具体策略
//加法
public cclass AdditionConcreteStrategy implement s Strategytrategy{
public double Caculate(double num1,double num2){
return num1+num2;
}
}
//减法
public cclass SubtractionConcreteStrategy implement s Strategytrategy{
public double Caculate(double num1,double num2){
return num1-num2;
}
}
//乘法
public cclass MultiplicationConcreteStrategy implement s Strategytrategy{
public double Caculate(double num1,double num2){
return num1*num2;
}
} //除法
public cclass DivisionConcreteStrategy implement s Strategytrategy{
public double Caculate(double num1,double num2){
return num1/num2; }
}
//创建环境角色
public class Context {
//声明一个是有的Strategy
private Strategy st;
public Context (Strategy st){
this .st=st;
}
public double conCalculation(double num1,double num2){
return st.Aculatec(num1,num2);
}
//创建一个测试类
public class StrategyTest {
public static void main(String [] args){
//创建一个具体策略对象(就是你封装算法之一,我这里用的加法)
AdditionConcreteStrategy ac=new AdditionConcreteStrategy();
//创建一个环境对象,
Context con=new Context (ac);
system.out.println(con.conCalculation(3,2));
//输出:5
}
}
第一次写博客,有什么不对的请多多指教。