网站做qq登录界面,资阳地网站建设,怎样制作网站教程哪家好,青岛模板建站公司设计模式之策略模式
在策略模式中#xff0c;我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的对象
定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。 主要解决#xff1a;在有多种算法相似的情况下#xff0c;使用 if…else 所带来的复杂和…设计模式之策略模式
在策略模式中我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的对象
定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。 主要解决在有多种算法相似的情况下使用 if…else 所带来的复杂和难以维护 就好像是你要去西藏旅行首先你要先到达那里到达那里有很多种方式可以做火车做高铁坐飞机虽然在途中我们乘坐的交通工具不一样但是我们的起点和终点是明确的是固定的而我们选择的不同的交通工具就是不同的策略 像我们平常经常用的比较器comparator使用的也是策略模式因为其比较结果就只有三个10-1 创建Strategy接口
public interface Strategy {void doOperation(int num1, int num2);
}创建实现接口的类
public class MutiStrategy implements Strategy {Overridepublic void doOperation(int num1, int num2) {System.out.println(num1 * num2 num1 * num2);}
}public class AddStrategy implements Strategy {Overridepublic void doOperation(int num1, int num2) {System.out.println(num1num2num1num2);}
}public class SubStrategy implements Strategy {Overridepublic void doOperation(int num1, int num2) {System.out.println(num1-num2(num1-num2));}
}创建Context类重点
public class Context {private Strategy strategy;public Context(Strategy strategy){this.strategy strategy;}public void exeStrategy(int num1, int num2){strategy.doOperation(num1,num2);}
}编写测试类
public class StrategyMain {public static void main(String[] args) {Context context new Context(new AddStrategy());context.exeStrategy(1,2);Context context1 new Context(new SubStrategy());context1.exeStrategy(2,1);Context context2 new Context(new MutiStrategy());context2.exeStrategy(2,4);}
}