• 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);
        }
    }

    结果:

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

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

  • 相关阅读:
    随笔——关于读论文
    enumerate
    torch.max
    C# WPF侧边栏导航菜单(Dropdown Menu)
    C# WPF过渡效果实现(C# WPF Material Design UI: Transitions)
    用C# WPF简单实现仪表控件
    自定义滚动条(Custom ScrollBar)
    从头实现一个WPF条形图
    漂亮的无序列表样式
    C# WPF实用的注册窗体
  • 原文地址:https://www.cnblogs.com/zhengyuanyuan/p/10755959.html
Copyright © 2020-2023  润新知