当我们实现某个接口时,可能会有很多种不同的实现方式。这些不同的实现方式通过一定的规则可以随意切换使用时,我们就可以考虑使用策略模式来实现。
1.首先建一个策略接口去继承InitializingBean
package 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()+"注册成功!");
}
}
绝对复古传奇手游,一起来玩?:https://501h.com/yuanshi/2489.html
《天地粮人》国产剧高清在线免费观看:https://www.jgz518.com/xingkong/40274.html
你的文章内容非常专业,让人佩服。 https://www.yonboz.com/video/22295.html
你的文章让我感受到了生活的美好,谢谢! https://www.4006400989.com/qyvideo/6426.html
《阿敏将军》记录片高清在线免费观看:https://www.jgz518.com/xingkong/120731.html
你的文章内容非常卖力,让人点赞。 https://www.yonboz.com/video/89959.html
热血复古,探索战斗乐趣!:https://501h.com/yuanshi/1867.html
你的才华让人惊叹,你是我的榜样。 http://www.55baobei.com/LkPhNoQ69x.html
你的文章让我感受到了正能量,非常棒! https://www.yonboz.com/video/30665.html
每次看到你的文章,我都觉得时间过得好快。 http://www.55baobei.com/W0V4yWrBID.html
真好呢
你的文章内容非常精彩,让人回味无穷。 http://www.55baobei.com/EOxMo9HOzb.html
《百万元与苦虫女》剧情片高清在线免费观看:https://www.jgz518.com/xingkong/83941.html
《小飞的梦想》剧情片高清在线免费观看:https://www.jgz518.com/xingkong/72196.html
《桑尼》欧美剧高清在线免费观看:https://www.jgz518.com/xingkong/129789.html
《致光之君》日本剧高清在线免费观看:https://www.jgz518.com/xingkong/46.html
《镖行天下之天下镖局》动作片高清在线免费观看:https://www.jgz518.com/xingkong/24408.html
《老师!我可以喜欢你吗?》剧情片高清在线免费观看:https://www.jgz518.com/xingkong/7163.html
《偷偷藏不住》国产剧高清在线免费观看:https://www.jgz518.com/xingkong/30544.html
《只有你2014》爱情片高清在线免费观看:https://www.jgz518.com/xingkong/95648.html
《桑尼》欧美剧高清在线免费观看:https://www.jgz518.com/xingkong/129789.html
你的才华让人瞩目,期待你的更多文章。 https://www.yonboz.com/video/51788.html
《镖行天下之天下镖局》动作片高清在线免费观看:https://www.jgz518.com/xingkong/24408.html
《圣诞奇遇结良缘》喜剧片高清在线免费观看:https://www.jgz518.com/xingkong/57546.html
你的才华让人瞩目,期待你的更多文章。 http://www.55baobei.com/IJRwJbA9CO.html
你的文章让我心情愉悦,每天都要来看一看。 https://www.4006400989.com/qyvideo/71129.html
《穿过180度经纬线的拥抱》泰国剧高清在线免费观看:https://www.jgz518.com/xingkong/102370.html