设计模式--策略模式
2016-04-09 00:00
274 查看
摘要: 简单记录策略模式的使用。
策略模式(strategy):
示例:
策略模式测试类StrategyTest.java
计算接口类Calculator.java
抽象的计算器类AbstractCalculator.java
减法计算类MinusImpl.java
乘法计算类MultiplyImpl.java
加法计算类PlusImpl.java
策略模式(strategy):
1. 定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。 2. 需要设计一个接口,为一系列实现类提供统一的方法,多个实现类实现该接口,设计一个抽象类(可有可无,属于辅助类),提供辅助函数。 3. 决定权在用户,系统本身提供不同算法的实现,新增或者删除算法,对各种算法做封装。
示例:
策略模式测试类StrategyTest.java
/** * 策略模式测试类 * * @author Kevin * @date 2016-3-16 */ public class StrategyTest { public static void main(String[] args) { String exp = "8*8"; Calculator calculator = new MultiplyImpl(); int result = calculator.calculator(exp); System.out.println("8*8 = " + result); } }
计算接口类Calculator.java
/** * 计算接口 * * @author Kevin * @date 2016-3-16 */ public interface Calculator { /** * 计算 * * @author Kevin * @param exp */ int calculator(String exp); }
抽象的计算器类AbstractCalculator.java
/** * 抽象的计算器类 * * @author Kevin * @date 2016-3-16 */ public abstract class AbstractCalculator { /** * 处理参数 * * @author Kevin * @param exp * @param opt */ public int[] split(String exp, String opt) { String array[] = exp.split(opt); int arrayInt[] = new int[2]; arrayInt[0] = Integer.parseInt(array[0]); arrayInt[1] = Integer.parseInt(array[1]); return arrayInt; } }
减法计算类MinusImpl.java
/** * 减法计算 * * @author Kevin * @date 2016-3-16 */ public class MinusImpl extends AbstractCalculator implements Calculator { @Override public int calculator(String exp) { int arrayInt[] = split(exp, "-"); return arrayInt[0] - arrayInt[1]; } }
乘法计算类MultiplyImpl.java
/** * 乘法计算 * * @author Kevin * @date 2016-3-16 */ public class MultiplyImpl extends AbstractCalculator implements Calculator { @Override public int calculator(String exp) { int arrayInt[] = split(exp, "\\*"); return arrayInt[0] * arrayInt[1]; } }
加法计算类PlusImpl.java
/** * 加法计算 * * @author Kevin * @date 2016-3-16 */ public class PlusImpl extends AbstractCalculator implements Calculator { @Override public int calculator(String exp) { int arrayInt[] = split(exp, "\\+"); return arrayInt[0] + arrayInt[1]; } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序