先看代码
建handler包
/**
* 模板方法设计模式
*/
public abstract class AbstractHandler implements InitializingBean {
public void AAA(String name) {
throw new UnsupportedOperationException();
}
public String BBB(String name,String str) {
throw new UnsupportedOperationException();
}
}
建factory包
/**
* 工厂设计模式
*/
public class Factory {
private static Map<String, AbstractHandler> strategyMap = Maps.newHashMap();
public static AbstractHandler getInvokeStrategy(String str) {
return strategyMap.get(str);
}
public static void register(String str, AbstractHandler handler) {
if (StringUtils.isEmpty(str) || null == handler) {
return;
}
strategyMap.put(str, handler);
}
}
建manger包
@Component
public class ZhangSanManger extends AbstractHandler {
@Override
public String BBB(String name,String str) {
// 业务逻辑B
return "张三完成任务B++++++++";
}
@Override
public void afterPropertiesSet() throws Exception {
Factory.register("张三", this);
}
}
测试
@Test
void test() {
try {
new ZhangSanManger().afterPropertiesSet();
} catch (Exception e) {
log.error(e.getMessage(), e);
}
String name = "张三";
AbstractHandler strategy = Factory.getInvokeStrategy(name);
//strategy.AAA(name);
String str = strategy.BBB(name,name);
System.out.println(str);
}
输出结果:
张三完成任务B++++++++
先这样吧,还有很多设计模式,这样的混合使用,还是挺香的吧,如果大家还有更多好用的设计模式,可以一起学习,一起成长
也欢迎大家来留言指导,谢谢!!!