23种设计模式之策略模式
来源:互联网 发布:淘宝网店怎么排名靠前 编辑:程序博客网 时间:2024/06/08 20:03
来源:Java开发中的23种设计模式详解 - 退思园 - 博客频道 - CSDN.NET
策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。需要设计一个接口,为一系列实现类提供统一的方法,多个实现类实现该接口,设计一个抽象类(可有可无,属于辅助类),提供辅助函数,关系图如下:
图中ICalculator提供同意的方法,
AbstractCalculator是辅助类,提供辅助方法,接下来,依次实现下每个类:
首先统一接口: ```````` `[java] view plaincopy 1.public interface ICalculator { 2. public int calculate(String exp); 3.} 辅助类:[java] view plaincopy 1.public abstract class AbstractCalculator { 2. 3. public int[] split(String exp,String opt){ 4. String array[] = exp.split(opt); 5. int arrayInt[] = new int[2]; 6. arrayInt[0] = Integer.parseInt(array[0]); 7. arrayInt[1] = Integer.parseInt(array[1]); 8. return arrayInt; 9. } 10.} 三个实现类:[java] view plaincopy 1.public class Plus extends AbstractCalculator implements ICalculator { 2. 3. @Override 4. public int calculate(String exp) { 5. int arrayInt[] = split(exp,"\\+"); 6. return arrayInt[0]+arrayInt[1]; 7. } 8.} [java] view plaincopy 1.public class Minus extends AbstractCalculator implements ICalculator { 2. 3. @Override 4. public int calculate(String exp) { 5. int arrayInt[] = split(exp,"-"); 6. return arrayInt[0]-arrayInt[1]; 7. } 8. 9.} [java] view plaincopy 1.public class Multiply extends AbstractCalculator implements ICalculator { 2. 3. @Override 4. public int calculate(String exp) { 5. int arrayInt[] = split(exp,"\\*"); 6. return arrayInt[0]*arrayInt[1]; 7. } 8.} 简单的测试类:[java] view plaincopy 1.public class StrategyTest { 2. 3. public static void main(String[] args) { 4. String exp = "2+8"; 5. ICalculator cal = new Plus(); 6. int result = cal.calculate(exp); 7. System.out.println(result); 8. } 9.} 输出:10`
策略模式的决定权在用户,系统本身提供不同算法的实现,新增或者删除算法,对各种算法做封装。因此,策略模式多用在算法决策系统中,外部用户只需要决定用哪个算法即可。
0 0
- 23种设计模式之策略模式
- 23种设计模式之策略模式
- 23种设计模式之策略模式
- 23种设计模式之策略模式
- 23种设计模式之策略模式
- 23设计模式之策略模式(Strategy)
- 23设计模式之策略模式(Strategy)
- 23中设计模式之策略模式
- java_23种设计模式之策略模式
- Java23种设计模式之策略模式
- 26种设计模式之策略模式
- java23种设计模式之策略模式
- java23种设计模式之策略模式
- 23种设计模式之策略模式(Strategy)
- 23种设计模式之策略模式(Strategy Pattern)
- 23种java设计模式之策略模式
- 23种设计模式C++实例之策略模式
- 简述23种java设计模式之策略模式(strategy)
- 任务执行(一)
- video4linux 讲解
- linux搭建java服务器,实现远程访问
- vs2010 问题 >LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- 文章标题
- 23种设计模式之策略模式
- mongoDB(基本使用)
- Eclipse代码提示失效[Alt+/]
- 微信开发整合日记(1)
- 南京邮电大学攻防平台密码学之异性相吸
- C++ HDOJ 1019
- 题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母。
- 停车场管理,最终版,
- SSD框架训练自己的数据集