java设计方式之策略模式
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 * 类。在策略模式中的计算方法的父类又进行了封装,进一步解耦,实际 * 上就是对方法的封装。 * *********************************************** */ }