假设有一个订单系统,里面的一个功能是根据订单的不同类型作出不同的处理。
1、传统模式 就是根据 不同 类型 type 分别做不同处理
public class OrderServiceTraditional implements IOrderService {
@Override
public String handle(OrderDTO orderDTO) {
String type = orderDTO.getType();
if (StringUtils.isEmpty(type)) {
//默认普通订单
type = "1";
}
if ("1".equals(type)) {
return "普通订单";
}
if ("2".equals(type)) {
return "团购订单";
}
if ("3".equals(type)) {
return "促销订单";
}
return null;
}
}
2、策略模式实现
通过定义注解类型,获取对应的handler,进而执行不同的业务逻辑
如果增加一种类型,只需要继承 AbstractHandler 即可
@Component
@HandlerType("4")
public class TestOrderHandler extends AbstractHandler {
@Override
public String handle(OrderDTO orderDTO) {
return "测试订单类型";
}
}
代码 github 地址:https://github.com/shihongwei/springboot-strategy