利用 策略模式 来 优化 你的复杂代码
实现策略模式分为两个重要的步骤:
第一:传入选择某种具体策略的标识;
第二:将所有的策略单独封装
第三:根据传入的标识,选择具体策略
在spring中, 我们可以将所有的策略实现类交给spring来管理;
public interface StrategyService { //模式(标识) String getZfptms(); //具体的策略算法(业务处理) String parse(String path);}
@Servicepublic class AAStrategyService implements StrategyService{ private static final String zfptms = "aaaaa"; //这里指定与当前策略相匹配的标识; @Override public String getZfptms() { return zfptms; } @Override public String parse(String path) { //具体业务处理 System.out.println("a模式================"); return null; }}@Servicepublic class BBStrategyService implements StrategyService{ private static final String zfptms = "bbbbb"; //这里指定与当前策略相匹配的标识; @Override public String getZfptms() { return zfptms; } @Override public String parse(String path) { //具体业务处理 System.out.println("bbbbb模式================"); return null; }}
@Componentpublic class StrategyFactory implements InitializingBean { //将之前所有的策略实现类注入; @Autowired List zfptStrategyServices; private static Map zfptStrategyServiceMap = new HashMap<>(); //spring bean初始化时收集所有策略实现类的策略标识,组成策略标识->策略实现的映射 @Override public void afterPropertiesSet() { zfptStrategyServices.stream().forEach(zfptStrategyService -> { zfptStrategyServiceMap.put(zfptStrategyService.getZfptms(), zfptStrategyService); }); System.out.println("策略组装完成-----" + zfptStrategyServiceMap); } public static StrategyService getZfptService(String zfptms){ return zfptStrategyServiceMap.get(zfptms); }}
留言与评论(共有 0 条评论) “” |