java设计模式之策略模式
这一节主要说明下策略模式的使用。同样,我们模拟计算器的场景。和简单工厂模式相比,只是对简单工厂模式的工厂进行了一点修改。简单工厂模式请点击这里,这里主要看下修改的部分。?
package com.yjck.strategy;/** * 策略模式 * 这个类根据操作类型的不同可以自由生成相应的处理类 */public class Factory {private Operation operation = null;public Factory(String opt){if("+".equals(opt)){operation = new OperationAdd();}if("-".equals(opt)){operation = new OperationSub();}if("*".equals(opt)){operation = new OperationMul();}if("/".equals(opt)){operation = new OperationDiv();}}/** * 对计算方法的提取封装 * @param a * @param b * @return */public double getResult(double a,double b){return operation.getResult( a, b);}}
客户端的修改
?
package com.yjck.strategy;public class Run {/** * 主类,程序入口 */public static void main(String[] args) {Factory factory = new Factory("+");double result = factory.getResult(1.00, 5.33);System.out.println(result);}/** * ********下面这些话是对策略模式的总结******** * 和简单工厂模式相比,策略模式只是对简单工厂模式进行了修改, * 主要的修改了factory,增加了自己的方法getResutl()。 * 并在构造方法中对具体实现类进行了构造。这样在客户单调用的 * 时候我们只出现了Factory类,并没有出现具体计算方法类的父类 * Operation,而简单工厂模式除了计算方法类的父类外,还有Factory * 类。在策略模式中的计算方法的父类又进行了封装,进一步解耦,实际 * 上就是对方法的封装。 * *********************************************** */}
?