假設(shè)有一個(gè)訂單系統(tǒng),里面的一個(gè)功能是根據(jù)訂單的不同類型作出不同的處理。
1幅聘、傳統(tǒng)模式 就是根據(jù) 不同 類型 type 分別做不同處理
public class OrderServiceTraditional implements IOrderService {
@Override
public String handle(OrderDTO orderDTO) {
String type = orderDTO.getType();
if (StringUtils.isEmpty(type)) {
//默認(rèn)普通訂單
type = "1";
}
if ("1".equals(type)) {
return "普通訂單";
}
if ("2".equals(type)) {
return "團(tuán)購(gòu)訂單";
}
if ("3".equals(type)) {
return "促銷訂單";
}
return null;
}
}
2、策略模式實(shí)現(xiàn)
通過定義注解類型窃植,獲取對(duì)應(yīng)的handler帝蒿,進(jìn)而執(zhí)行不同的業(yè)務(wù)邏輯
如果增加一種類型,只需要繼承 AbstractHandler 即可
@Component
@HandlerType("4")
public class TestOrderHandler extends AbstractHandler {
@Override
public String handle(OrderDTO orderDTO) {
return "測(cè)試訂單類型";
}
}
代碼 github 地址:https://github.com/shihongwei/springboot-strategy