工厂模式+模板方法模式 优化ifelse
public abstract class AbstractHandler implements InitializingBean {
public void AAA(String name){
throw new UnsupportedOperationException();
}
public void BBB(String name){
throw new UnsupportedOperationException();
}
}
public class JudgeFactory {
private static Map<String, AbstractHandler> strategyMap= Maps.newHashMap();
public static AbstractHandler getInvokeStrategy(String name){
return strategyMap.get(name);
}
public static void register(String name, AbstractHandler handler){
if(StringUtil.isEmpty(name)||handler==null){
return;
}
strategyMap.put(name,handler);
}
}
@Component
public class ZhangSanHandler extends AbstractHandler{
@Override
public void AAA(String name){
System.out.print("张三完成了任务");
}
@Override
public void afterPropertiesSet() throws Exception {
JudgeFactory.register(HandlerNameEnum.ZHANG_SAN.getValue(),this);
}
}
@SpringBootTest
@Slf4j
public class StategyTest {
@Test
void testZhangsan(){
AbstractHandler invokeStrategy = JudgeFactory.getInvokeStrategy(HandlerNameEnum.ZHANG_SAN.getValue());
invokeStrategy.AAA(HandlerNameEnum.ZHANG_SAN.getValue());
}
}