Java 代码中 策略模式干掉 if else

假设有一个订单系统,里面的一个功能是根据订单的不同类型作出不同的处理。

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

你可能感兴趣的:(Java 代码中 策略模式干掉 if else)