策略模式编程

接口定义:

public interface ProcessParserStrategy {
List<ProcessInfo> parser(String osType, String processInfo);
String getApp();
}

public interface ConfigParserStrategy {
List<ConfigInfo> parser(String configInfo);
String getConfigType();
}

接口实现:

@Service
public class xxxProcessParser implements ProcessParserStrategy {
@Override
public List<ProcessInfo> parser(String osType, String processInfo) {
return null;
}

@Override
public String getApp() {
return "xxx";
}
}

@Service
public class xxxDispatcherConfigParser implements ConfigParserStrategy {
@Override
public List<ConfigInfo> parser(String configInfo) {
return null;
}

@Override
public String getConfigType() {
return "xxx_dispatcher";
}
}

service定义:

@Service
public class ProcessParserService {
private Map<String, ProcessParserStrategy> processParserStrategyMap;

@Autowired
public ProcessParserService(List<ProcessParserStrategy> processParserStrategyList) {
processParserStrategyMap = processParserStrategyList.stream()
.collect(Collectors.toMap(ProcessParserStrategy::getApp, Function.identity()));
}

public List<ProcessInfo> parseProcess(String app, String osType, String processInfo) {
final ProcessParserStrategy processParserStrategy = processParserStrategyMap.get(app);
final List<ProcessInfo> processInfos = processParserStrategy.parser(osType, processInfo);
return processInfos;
}
}

@Service
public class ConfigParserService {
private Map<String, ConfigParserStrategy> configParserStrategyMap;

@Autowired
public ConfigParserService(List<ConfigParserStrategy> configParserStrategieList) {
configParserStrategyMap = configParserStrategieList.stream()
.collect(Collectors.toMap(ConfigParserStrategy::getConfigType, Function.identity()));
}

public List<ConfigInfo> parseProcess(String app, String configFileType, String configInfo) {
String configType = app + "_" + configFileType;
final ConfigParserStrategy configParserStrategy = configParserStrategyMap.get(configType.toLowerCase());
final List<ConfigInfo> configInfos = configParserStrategy.parser(configInfo);
return configInfos;
}
}

client 调用:

@RestController public class PaymentController { @Autowired private xxxService xxxService; @GetMapping("/xxx") public void xxx(@RequestParam String type, @RequestParam int amount) { xxxService.xxx(type, amount); } }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/31354.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MongoDB安装配置教程(详细版)

MongoDB安装配置教程&#xff08;详细版&#xff09; 1.下载与安装2.环境配置3.开机自启动 1.下载与安装 下载MongoDB数据库地址&#xff1a;&#xff08;会自动检测电脑版本&#xff0c; 下载合适的MongoDB 版本号&#xff09; https://www.mongodb.com/try/download/commun…

openstack-同一物理机中透传不同GPU时的nova配置记录

文章目录 前言一、不同加速卡的型号信息二、计算节点增加配置信息1.nova-compute服务的nova.conf 三、控制节点增加配置信息1.nova-conductor服务的nova.conf2.nova-scheduler服务的nova.conf3.nova-api服务的nova.conf 四、准备实例模版五、进行测试&#xff0c;创建虚拟机、检…

qmt量化交易策略小白学习笔记第47期【qmt编程之期货仓单】

qmt编程之获取期货数据 qmt更加详细的教程方法&#xff0c;会持续慢慢梳理。 也可找寻博主的历史文章&#xff0c;搜索关键词查看解决方案 &#xff01; 感谢关注&#xff0c;咨询免费开通量化回测与获取实盘权限&#xff0c;欢迎和博主联系&#xff01; 期货仓单 提示 1…

npm语义化版本和版本运算符

版本号组成 一个完整的版本号&#xff0c;由三部分组成&#xff1a;主版本号&#xff08;major&#xff09;、次版本号(minor)、修订版本号(patch)&#xff0c;简称X.Y.Z&#xff0c;具体含义&#xff1a; 主版本号&#xff08;major&#xff09;&#xff1a;项目&#xff08…

虚拟机空间满了怎么办?

只剩143.8MB 1. 清理不必要的文件和软件 首先尝试清理系统中的不必要文件和软件&#xff0c;以释放一些空间。 清理包缓存 sudo apt-get clean sudo apt-get autoclean sudo apt-get autoremove 查找大文件 使用以下命令查找系统中的大文件&#xff0c;并删除不必要的文…

2024广东省职业技能大赛云计算赛项实战——Redis主从架构

Redis主从架构 前言 Redis是一个开源的内存数据结构存储系统&#xff0c;一般用于作为数据库、缓存和消息代理使用&#xff0c;而主从架构是许多分布式系统中常见的设计模式&#xff0c;用来提高系统的性能、可靠性和扩展性。 虚拟机使用的是自行创建的CentOS7&#xff0c;如…

GaussDB关键技术原理:高性能(一)

引言 对数据库性能进行优化是令人激动的&#xff0c;无论是对其进行性能需求分析、性能需求设计、性能问题定个位都是富于变化又充满挑战的工作&#xff0c;本章围绕“数据库性能”进行全面系统化的介绍&#xff0c;首先从数据库在现代软件栈中所处的位置出发&#xff0c;介绍…

ip地址怎么写才是的对的?合法ip地址正确的格式

IP地址怎么写才是的对的&#xff1f;在互联网的世界里&#xff0c;IP地址就像是我们生活中的门牌号码&#xff0c;它是每个设备在网络中的唯一标识。正确的书写IP地址对于确保网络通信的顺畅至关重要。本文将带您了解合法IP地址的正确格式与书写规范&#xff0c;并深入探讨其在…

数据采集之二主一从,485总线共享器

产品概述 485总线共享器示意图 功能示意图 DAQ-GP-485HUB是上海数采物联网推出的一款 RS485总线多路复用共享数据处理器&#xff0c;是一款高性能的通讯设备&#xff0c;专门针对两台主机和 一台从机通讯时导致的数据冲突而设计。在实际工业控制和监控场景中&#xff0c;多个主…

IT运维服务方案

在现代企业中&#xff0c;信息系统已经成为业务运营的核心。为了确保这些系统的高效、稳定运行&#xff0c;制定一套完善的IT运维服务方案至关重要。本文将探讨如何设计和实施一个高效的IT运维服务方案&#xff0c;确保信息系统的持续健康运行。 IT运维服务的目标 IT运维服务…

43.商城系统(二十四):kubernate基础架构,集群搭建

目录 一、为什么要用k8s 1.不同时代的部署 2.k8s的特点 二、k8s的基本架构 1.整体架构 2.主节点架构 3.node节点 4.整体流程 三、K8S集群搭建 1.先克隆三个虚拟机 2.设置NAT网络 3.配置虚拟机前置环境 4.安装Docker、kubeadm、kubelet、kubectl (1)安装docker …

Protobuf Reflection 反射使用

Protobuf Reflection 反射使用 源码地址&#xff1a;https://github.com/Michaelzhouisnotwhite/DemoCXXCode/blob/main/src/protobuf-reflection/main.cpp 首先创建一个proto文件&#xff1a; syntax "proto3";// option optimize_for LITE_RUNTIME; // 不使用M…

YOLOv8改进 | FPN | 新型上采样算子CARAFE【全网独家】

&#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv8改进有效涨点》专栏介绍 & 专栏目录 | 目前已有40篇内容&#xff0c;内含各种Head检测头、损失函数Loss、…

什么?CSS 要支持内联条件语句!

CSS 工作组&#xff08;WG&#xff09;决定在 CSS 中添加一个内联的 if() 函数。本文解读 if() 函数的设计理念与应用场景&#xff0c;对比其与 style queries 的差异&#xff0c;展示在复杂条件处理上的独特优势。 CSS 工作组决定在 CSS 中添加一个内联的 if() 函数 上周&am…

小程序大作为|小程序开发详细流程,新手也能轻松掌握

随着移动互联网的快速发展&#xff0c;小程序作为一种轻量级应用&#xff0c;因其无需下载安装、即点即用、用完即走的特点&#xff0c;受到了广大用户的青睐。那么开发小程序都有哪些开发流程呢&#xff1f;可以用哪种方式开发&#xff1f;选择合适的开发方式&#xff0c;一起…

小程序知识点:Vant!!!

小伙伴们好啊&#xff0c;今天我们来学习vant。 介绍&#xff1a; 特性&#xff1a; 提供60多个高质量组件&#xff0c;覆盖移动端各类场景性能极佳&#xff0c;组件平均体积不到1kb单元测试覆盖率90%&#xff0c;提供稳定性保障完善的中英文文档和示例支持Vue2&Vue3支持…

华为设备telnet 远程访问配置实验简述

一、实验需求: 1、AR1模拟电脑telnet 访问AR2路由器。 二、实验步骤&#xff1a; 1、AR1和AR2接口配置IP&#xff0c;实现链路通信。 2、AR2配置AAA模式 配置用户及密码 配置用户访问级别 配置用户telnet 访问服务 AR2配置远程服务数量 配置用户远程访问模式为AAA 配置允许登录…

批量推送邮件如何高效实现?邮件推送技巧?

批量推送邮件有哪些注意事项&#xff1f;如何优化邮件推送效果&#xff1f; 无论是市场营销、客户服务还是内部沟通&#xff0c;批量推送邮件都发挥着关键作用。然而&#xff0c;如何高效实现批量推送邮件却是一个需要深思的问题。AokSend将探讨一些提高批量推送邮件效率的方法…

2005年上半年软件设计师【上午题】试题及答案

文章目录 2005年上半年软件设计师上午题--试题2005年上半年软件设计师上午题--答案2005年上半年软件设计师上午题–试题

stm32没有mmu,不能跑linux操作系统

stm32能跑linux操作系统吗&#xff1f; 答案&#xff1a;想要运行linux&#xff0c;芯片需要MMU&#xff0c;STM32没有MMU&#xff0c;所以不能运行Linux&#xff0c;WinCE等&#xff1b;但是可以运行ucosii、freertos、uLinux、vxWorks等。 根本原因&#xff1a;linux系统是…