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

  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);
    }
}
相关推荐
y5236482 分钟前
解决OpenJDK用maven构建项目,出现的SSL以及SpringBoot端口一直被占用问题
java·maven·ssl
金灰3 分钟前
Https AK--(ssl 安全感满满)
开发语言·网络·安全·web安全·网络安全
桃花加酥20 分钟前
js笔记(二进制由0和1两个数字组成)
java·javascript
拾光师21 分钟前
POI操作EXCEL插入图片
java
熙曦Sakura21 分钟前
【C++】C++入门概念(二)
开发语言·c++
Leighteen27 分钟前
Java8四大函数接口
java·开发语言
会洗碗的CV工程师31 分钟前
828华为云征文 | 使用Flexus X实例搭建Dubbo-Admin服务
java·linux·服务器·华为云·dubbo
cc77521033 分钟前
Tomcat后台弱口令部署war包
java·tomcat
聂 可 以34 分钟前
解决IDEA每次创建新项目时都要指定Maven仓库和Maven配置文件的问题
java·intellij-idea
不写八个41 分钟前
Python办公自动化教程(001):PDF内容提取
开发语言·python·pdf