使用策略设计模式+工厂模式+模板方法模式取代if else
关键点: InitializingBean和它的afterPropertiesSet()方法,抽象类
IT老哥讲解的视频地址
效果测试类
/**
* @author : lyn
* 技术点 :
* @description:
* @date : 2022/3/15 22:23
*/
?
关键代码
抽象类
/**
* @author : lyn
* 技术点 :模板方法设计模式
* 可处理对于多种不同的返回逻辑
* @date : 2022/3/15 21:48
*/
public abstract class AbstractHandler implements InitializingBean {
?
?
public void methodA(){
//对于未重写的,抛出不支持操作异常
throw new UnsupportedOperationException();
}
?
public String methodB(){
throw new UnsupportedOperationException();
}
?
}
?
两个实现
/**
* @author : lyn
* 技术点 :
* @description:
* @date : 2022/3/15 21:55
*/
/**
* @author : lyn
* 技术点 :
* @description:
* @date : 2022/3/15 21:58
*/
工厂类
/**
* @author : lyn
* 技术点 :
* @description:
* @date : 2022/3/15 21:59
*/
public class HandlerFactory {
?
private static Map<String, AbstractHandler> strategyMap = new HashMap<>();
?
public static AbstractHandler getInvokeStrategy(String str) {
return strategyMap.get(str);
}
?
public static void register(String str, AbstractHandler handler) {
if (StringUtils.isEmpty(str) || handler == null){
return;
}
strategyMap.put(str, handler);
}
?
}