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

Java使用Map数据结构配合函数式接口存储方法引用

Java使用Map数据结构配合函数式接口存储方法引用

背景 需求中存在这样一直情况 一个国家下面有很多的州 每个州对应的计算日期方法是不同的 这个时候 就面临 可能会有很多if else 为了后期维护尽量还是不想采用这个方式,那么就可以使用策略模式 但是 使用策略带来的效果是 有很多个策略类 导致项目.class 剧增 本身只是一个处理时间的计算 后期改动也不大尽量还是想放到一个类中处理,统一维护 不用分散开,那么这个时候可以考虑使用map 去统一维护 但是要是实现 value 保存的是方法 那么就要使用 函数接口实现:

具体实现:

import java.util.HashMap;
import java.util.Map;
import java.util.function.Consumer;public class TestRegithMain {public static void main(String[] args) {TestRegithMain testRegithMain = new TestRegithMain();testRegithMain.execute(1);}private final Map<Integer, Consumer<TestRegithMain>> methods = new HashMap<>();public TestRegithMain() {methods.put(1, TestRegithMain::method1);methods.put(2, TestRegithMain::method2);methods.put(3, TestRegithMain::method3);}public void execute(int code) {Consumer<TestRegithMain> method = methods.get(code);if (method != null) {method.accept(this);} else {//  记录日志、发送警告或者抛出异常,具体取决于你的应用需求}}private void method3() {System.out.println("执行方法3");}private void method2() {System.out.println("执行方法2");}private void method1() {System.out.println("执行方法1");}}

这样就是能实现 根据 code 可以去使用对应的方法而不用去创建很多类 再去根据bean 去获取这样方便很多。

http://www.lryc.cn/news/445642.html

相关文章:

  • LeetCode:2207. 字符串中最多数目的子序列(Java)
  • win10开机自启动方案总汇
  • 【自动驾驶】基于车辆几何模型的横向控制算法 | Stanley 算法详解与编程实现
  • 微服务--初识MQ
  • 车辆识别数据集,图片数量20500,模型已训练200轮
  • MES系统如何提升制造企业的运营效率和灵活性
  • Nexpose 6.6.270 发布下载,新增功能概览
  • 【数据库】sqlite
  • 详解 C++中的模板
  • 基于DAMODEL——Faster-RCNN 训练与测试指南
  • 考研数据结构——C语言实现冒泡排序
  • labview更换操作系统后打开原VI闪退
  • 什么是CAPTCHA?有什么用途?
  • 在虚幻引擎中创建毛发/头发
  • PHP API 框架:构建高效API的利器【电商API接口】
  • transformer模型写诗词
  • [大语言模型-工程实践] 手把手教你-基于Ollama搭建本地个人智能AI助理
  • 开放原子开源基金会OPENATOM
  • Docker的监控:docker stats与docker events
  • jvm专题 之 内存模型
  • 分布式计算框架
  • YOLO交通目标识别数据集(红绿灯-汽车-自行车-卡车等)
  • Vue学习记录之六(组件实战及BEM框架了解)
  • 为什么会出现电话机器人?语音电话机器人的出现起到了什么作用?
  • 【CSS Tricks】深入聊聊前端编写css的方法论
  • 多维时序 | GWO-VMD-SSA-LSTM灰狼优化变分模态分解联合麻雀优化长短期记忆网络多变量时间序列光伏功率预测(Matlab)
  • 5.使用 VSCode 过程中的英语积累 - Go 菜单(每一次重点积累 5 个单词)
  • Java高级Day50-连接池
  • 软件设计-开闭原则
  • Angular面试题八