当前位置: 首页 > article >正文

策略模式以及优化

使用场景

在一个条件语句中又包含了多个条件语句

具体策略类会过多

把抽象策略和具体策略放在一个枚举类里。

方法 exe() 相当于抽象策略,而A和B就相当于实现了抽象策略的具体策略
这样就只需要一个枚举类就可以解决具体策略类过多的问题

public enum Strategy {
    A{

        @Override
        public void exe() {
            System.out.println("执行具体策略A");
        }

    },
    B{
        @Override
        public  void exe() {
            System.out.println("执行具体策略B");
        }

    };

    public abstract void exe();

}

彻底消除if else

Map<条件,具体策略>

完整代码

public enum Strategy {
    A{

        @Override
        public void exe() {
            System.out.println("执行具体策略A");
        }

    },
    B{
        @Override
        public  void exe() {
            System.out.println("执行具体策略B");
        }

    };

    public abstract void exe();

}
public class Test {
    public static void main(String[] args) {
        Map<String, Strategy> map=new LinkedHashMap<>();
        map.put("A",Strategy.A);
        map.put("B",Strategy.B);

        String str="A";
        map.get(str).exe();
    }

}


http://www.kler.cn/a/456579.html

相关文章:

  • npm install 安装选项 -d -s -g
  • 集成方案 | Docusign + 蓝凌 EKP,打造一站式合同管理平台,实现无缝协作!
  • UniApp 打开文件工具,获取文件类型,判断文件类型
  • TBase创建默认组时报错:ERROR PGXC Node dn001 object not defined
  • 基于PLC的电梯控制系统(论文+源码)
  • Flutter:打包apk,详细图文介绍
  • 贪心算法解决监控二叉树问题
  • 正则表达式:由浅入深
  • optuna和 lightgbm
  • python安装
  • Wireshark协议相关功能:过滤、启用/禁用、导出和统计查看
  • 【Unity3D】ECS入门学习(四)World、System、SystemGroup、Entity
  • vue打印单支持横向两个表格
  • 1.Occ-基础部分
  • UE5玻璃材质
  • Rust编程与项目实战-箱
  • GDPU 数据库原理 期末复习(持续更新……)
  • 高级java每日一道面试题-2024年12月28日-并发篇-了解Semaphore吗?
  • 【Web】0基础学Web—js类和对象、json、js对象解构、js对象遍历、js深浅拷贝
  • HCIA-Access V2.5_6_3_GPON组网保护
  • mongodbredisneo4j 如何自己打造一个 web 数据库可视化客户端?
  • phidata快速开始
  • Docker--Bitnami/redis
  • Android9.x SurfaceView源码分析
  • 重学SpringBoot3-RestTemplate配置与使用详解
  • 7-Linux系统的磁盘基本管理