策略模式+模版模式+工厂模式

devtools/2024/11/15 4:15:01/

1. 抽象类

java">/*** 策略模式:不同类型选择不同的实现策略* */
public interface AbstractStrategy {/*** 模版模式:不同策略实现同一接口的共性部分(公共方法)* */default void commentMeth(){System.out.println("模版方法");}void handle(Object object);
}

2.抽象的实现 

java">@Service
public class AchieveOneStrategy implements AbstractStrategy{@Overridepublic void handle(Object obj) {}
}
java">@Service
public class AchieveTwoStrategy implements AbstractStrategy{@Overridepublic void handle(Object object) {}
}
java">@Service
public class AchieveThreeStrategy implements AbstractStrategy{@Overridepublic void handle(Object object) {}
}

3.枚举

java">public enum StrategyTypeEnum {ONE_STRATEGY(0,AchieveOneStrategy.class),TWO_STRATEGY(1,AchieveTwoStrategy.class),THREE_STRATEGY(2,AchieveThreeStrategy.class),;Integer type;Class<? extends AbstractStrategy> aClass;StrategyTypeEnum(Integer type, Class<? extends AbstractStrategy> aClass){this.type = type;this.aClass = aClass;}
}

4.工厂

java">/*** 工厂模式:根据不同类型创建不同实例* */
@Service
public class StrategyFactory {@Autowiredprivate ApplicationContext applicationContext;static HashMap<Integer, Class<? extends AbstractStrategy>> strategyHashMap = new HashMap<>();static {for (StrategyTypeEnum value : StrategyTypeEnum.values()) {strategyHashMap.put(value.type, value.aClass);}}public AbstractStrategy executeStrategy(Integer flag){Class<? extends AbstractStrategy> aClass = strategyHashMap.get(flag);return applicationContext.getBean(aClass);}
}


http://www.ppmy.cn/devtools/115489.html

相关文章

【STM32】esp8266通过MQTT连接服务器|订阅发布

1. MQTT协议 该协议为应用层协议&#xff0c;传输层使用的是tcp,MQTT的订阅和发布&#xff0c;就相当于在抖音中你关注了某个领域的博主&#xff08;订阅&#xff09;&#xff0c;如果有其他人发了作品就会推给你&#xff08;发布&#xff09;&#xff0c;默认已经安装好了 简…

java实现LRU 缓存

如果碰到这种题⽬先不要慌张&#xff0c;现在脑海⾥回忆⼀遍 LRU 的基本概念&#xff1a;LRU&#xff08;Least Recently Used&#xff0c;最近最少使⽤&#xff09;是⼀种缓存算法&#xff0c;其核⼼思想是将最近最少使⽤的缓存项移除&#xff0c;以便为更常 ⽤的缓存项腾出空…

鸿蒙4.0(HarmonyOS 4.0)与鸿蒙Next(HarmonyOS Next)区别

鸿蒙4.0&#xff08;HarmonyOS 4.0&#xff09;与鸿蒙Next&#xff08;HarmonyOS Next&#xff09;是华为推出的两个不同版本的操作系统&#xff0c;它们之间存在一些显著的区别&#xff1a; 兼容性&#xff1a; 鸿蒙4.0&#xff1a;依然保持了对Android应用的兼容性&#xff0…

【30天玩转python】使用第三方库(如 NumPy、Pandas)

使用第三方库&#xff08;如 NumPy、Pandas&#xff09; Python 的强大之处在于其广泛的第三方库生态&#xff0c;特别是在科学计算、数据分析等领域。NumPy 和 Pandas 是 Python 最常用的两个库&#xff0c;分别用于数值计算和数据处理。学习和掌握这些库将极大地提升你的编程…

医学数据分析实训 项目九 糖尿病风险预测

文章目录 综合实践二 糖尿病遗传风险预测一、分析目标二、实现步骤三、数据准备四、特征工程五、模型构建六、性能度量七、提交要求 综合实践任务二 糖尿病遗传风险预测代码&#xff08;一&#xff09;数据准备&#xff08;二&#xff09;特征工程&#xff08;三&#xff09;模…

网络安全。

文章目录 目录 文章目录 一. 网络安全概述 二. 密码学原理 三. 报文完整性和数字签名 密码散列函数 报文鉴别码 数字签名 公钥认证 四. HTTPS通信 总结 一. 网络安全概述 网络安全是保护计算机网络及其数据免受各种威胁和攻击的实践和技术。随着互联网的普及和数字化…

saas收银系统源码

1. 线下门店多样化收银 ①门店有社区小店、也会有大店&#xff0c;甚至还会有夫妻店&#xff0c;同时还要有Windows版和安卓版&#xff0c;需满足不同门店的收银需求。 ②支持Windows收银、安卓收银、无人自助收银、聚合码收银等&#xff0c;支持ai智能称重、收银称重一体机等…

前端实用工具(二):编程规范化解决方案

目录 本地代码规范化工具 代码检测工具ESLint 代码格式化工具Prettier 远程代码规范化工具 远程提交规范化工具commitizen 提交规范检验工具commitlint husky 什么是git hooks commitlint安装 husky安装 检测代码提交规范 ESLint husky 自动修复格式错误lint-staged…