zoukankan      html  css  js  c++  java
  • java实现23种设计模式之策略模式

    策略模式就是定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。

    先定义一个统一的接口

    package com.ceshi12;
    
    public interface ICalculator {
        public int calculate(String exp);
    }
    package com.ceshi12;
    
    public class AbstractCalculator {
        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;
        }
    }

    这是一个辅助类

    package com.ceshi12;
    
    public class Minus extends AbstractCalculator implements ICalculator {
    
        @Override
        public int calculate(String exp) {
            int arrayInt[] = split(exp,"-");
            return arrayInt[0]-arrayInt[1];
        }
    
    }
    package com.ceshi12;
    
    public class Multiply extends AbstractCalculator implements ICalculator {
    
        @Override
        public int calculate(String exp) {
            int arrayInt[] = split(exp,"\*");
            return arrayInt[0]*arrayInt[1];
        }
    }
    package com.ceshi12;
    
    public class Plus extends AbstractCalculator implements ICalculator {
    
        @Override
        public int calculate(String exp) {
            int arrayInt[] = split(exp,"\+");
            return arrayInt[0]+arrayInt[1];
        }
    }

    上面是运算类

    package com.ceshi12;
    
    public class StrategyTest {
    
        public static void main(String[] args) {
            String exp = "2+8";
            ICalculator cal = new Plus();
            int result = cal.calculate(exp);
            System.out.println(result);
        }
    }

    结果:

    通过接口的多态实现不同的运算方法

    策略模式的决定权在用户,系统本身提供不同算法的实现,新增或者删除算法,对各种算法做封装。因此,策略模式多用在算法决策系统中,外部用户只需要决定用哪个算法即可。

  • 相关阅读:
    bootstrap插件学习-bootstrap.tooltip.js
    1,2,3维数组去重方法
    使用PHP静态变量当缓存的方法
    深思 PHP 数组遍历的差异(array_diff 的实现)
    ecshop学习五
    ecshop学习四
    ecshop学习三
    ecshop学习二
    ecshop学习一
    linux下安装ecshop
  • 原文地址:https://www.cnblogs.com/zhengyuanyuan/p/10755959.html
Copyright © 2011-2022 走看看