首页
友链
统计
留言
关于
Search
1
网站声明
55 阅读
2
Java生成二维码——基于Google插件
55 阅读
3
Java使用poi-tl动态生成word和pdf
36 阅读
4
循环单链表及其实现
31 阅读
5
双链表及其实现
31 阅读
默认分类
Java
C语言
数据库技术
Linux
前端
其他
登录
/
注册
Search
标签搜索
C语言
数据结构
Java
Spring
数据库技术
MySQL
设计模式
策略模式
工厂模式
IDEA
SpringMVC
AOP
MybatisPlus
POI
easyExcel
LiXiangrong
累计撰写
56
篇文章
累计收到
4
条评论
首页
栏目
默认分类
Java
C语言
数据库技术
Linux
前端
其他
页面
友链
统计
留言
关于
搜索到
1
篇与
的结果
2024-01-03
利用Spring的InitializingBean优雅的实现策略模式
当我们实现某个接口时,可能会有很多种不同的实现方式。这些不同的实现方式通过一定的规则可以随意切换使用时,我们就可以考虑使用策略模式来实现。1.首先建一个策略接口去继承InitializingBeanpackage com.example.springbootdemo.strategy; import com.example.springbootdemo.factory.WaitHandleContext; import org.springframework.beans.factory.InitializingBean; /** * @Author LiXiangrong * @Description 策略接口 * @Date 2023/03/13 13:08:20 **/ public interface Strategy extends InitializingBean { /** * @Author LiXiangrong * @Description 要实现的业务方法 * @Date 2023/03/13 13:08:48 * @Return void **/ void method(); @Override default void afterPropertiesSet() { WaitHandleContext.registry(this); } /** * @Author LiXiangrong * @Description getType * @Date 2023/03/13 13:08:43 * @Return java.lang.String **/ String getType(); }2.接下来需要创建一个上下文角色类去注册策略。策略模式的重点是上下文角色类,他封装了对具体策略的调用。上下文角色类中维护着一个抽象角色的引用,高层模块在调用上下文角色类时,通过构造方法或其他方式将具体的策略角色实例赋给该引用,然后调用上下文角色类中的方。通过高层模块在上下文角色类中设置的不同具体策略实例即可执行不同的具体策略。 package com.example.springbootdemo.factory; import com.example.springbootdemo.strategy.Strategy; import java.util.Map; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; public class WaitHandleContext { private WaitHandleContext() { } private static final Map<String, Strategy> strategyMaps = new ConcurrentHashMap<>(); public static Strategy chooseStrategy(String type) { return Optional.ofNullable(strategyMaps.get(type)).orElseThrow(()->new IllegalArgumentException("无对应策略")); } public static void registry(Strategy strategy) { //不注册重复策略 strategyMaps.putIfAbsent(strategy.getType(), strategy); System.out.println("策略"+strategy.getType()+"注册成功!"); } }3.接下来去实现策略接口即可。
2024年01月03日
27 阅读
0 评论
0 点赞