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

    结果:

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

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

  • 相关阅读:
    Eureka 系列(04)客户端源码分析
    Eureka 系列(03)Spring Cloud 自动装配原理
    Eureka 系列(02)Eureka 一致性协议
    Eureka 系列(01)最简使用姿态
    Feign 系列(05)Spring Cloud OpenFeign 源码解析
    python 线程,进程与协程
    Python IO多路复用
    python 作用域
    python 网络编程:socket(二)
    python 网络编程:socket
  • 原文地址:https://www.cnblogs.com/zhengyuanyuan/p/10755959.html
Copyright © 2020-2023  润新知