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

  1. 抽象类
java 复制代码
/**
 * 策略模式:不同类型选择不同的实现策略
 * */
public interface AbstractStrategy {

    /**
     * 模版模式:不同策略实现同一接口的共性部分(公共方法)
     * */
    default void commentMeth(){
        System.out.println("模版方法");
    }

    void handle(Object object);
}

2.抽象的实现

java 复制代码
@Service
public class AchieveOneStrategy implements AbstractStrategy{
    @Override
    public void handle(Object obj) {

    }
}
java 复制代码
@Service
public class AchieveTwoStrategy implements AbstractStrategy{
    @Override
    public void handle(Object object) {

    }
}
java 复制代码
@Service
public class AchieveThreeStrategy implements AbstractStrategy{
    @Override
    public 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 {

    @Autowired
    private 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);
    }
}
相关推荐
✎ ﹏梦醒͜ღ҉繁华落℘12 小时前
菜鸟的算法基础
java·数据结构·算法
梨落秋霜12 小时前
Python入门篇【基础语法】
开发语言·python
老华带你飞13 小时前
社团管理|基于Java社团管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端
shayudiandian13 小时前
用LangChain打造你自己的智能问答系统
java·数据库·langchain
啊森要自信13 小时前
【STM32】USART串口通信
c语言·开发语言·stm32·单片机·嵌入式硬件
小白学大数据13 小时前
Python 多线程爬取社交媒体品牌反馈数据
开发语言·python·媒体
invicinble13 小时前
spring相关系统性理解,企业级应用
java·spring·mybatis
祝余Eleanor13 小时前
Day 31 类的定义和方法
开发语言·人工智能·python·机器学习
jiayong2314 小时前
Spring IOC 与 AOP 核心原理深度解析
java·spring·log4j
卿雪14 小时前
Redis 线程模型:Redis为什么这么快?Redis为什么引入多线程?
java·数据库·redis·sql·mysql·缓存·golang