• 基于springBoot的策略模式


    策略模式最大的优点是可以干掉大量的if-else,使代码更简洁明了

    /**
    * 基于注解的策略模式的核心类
    * 优点:可以干掉大量if-else
    *
    * @author nanfengxiangbei
    * @date 2020/8/7 13:55
    */
    @Service
    public class OrderHandleContext {
    private Map<String, OrderHandler> orderHandleMap;

    @Autowired
    public void setOrderHandleMap(List<OrderHandler> orderHandlers) {
    // 注入各种类型的订单处理类
    orderHandleMap = orderHandlers.stream().collect(
    Collectors.toMap(orderHandler -> AnnotationUtils.findAnnotation(orderHandler.getClass(), OrderHandlerType.class).source(),
    v -> v, (v1, v2) -> v1));
    }

    public void orderService(String type, AddedSyncInfoBO syncInfo) throws Exception {
    // ...一些前置处理

    // 通过订单来源确定对应的handler
    OrderHandler orderHandler = orderHandleMap.get(type);

    // ...一些后置处理
    orderHandler.handle(syncInfo);
    }
    }

    /**
    * 基于注解
    *
    * @author nanfengxiangbei
    * @date 2021/03/18 13:49
    */
    public interface OrderHandler {

    /**
    * 业务处理的公用方法
    *
    * @param syncInfo 消息体
    */
    void handle(AddedSyncInfoBO syncInfo) throws Exception;
    }


    /**
    * @author nanfengxiangbei
    * @date 2020/8/7 13:50
    */
    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Service
    public @interface OrderHandlerType {
    String source();
    }


    /**
    * OperationTypeConstant.ADDED_BIZ_CANCEL 操作代码
    *
    * @author nanfengxiangbei
    * @date 2021/03/18 13:53
    */
    @OrderHandlerType(source = OperationTypeConstant.ADDED_BIZ_CANCEL)
    public class CancelHandler implements OrderHandler {

    private final Logger logger = LoggerFactory.getLogger(CancelHandler.class);

    @Override
    public void handle(AddedSyncInfoBO syncInfo, ServiceProduct product, UserInfoBO userInfoBO) {
    // 业务处理
    dealClose(syncInfo);
    }
    }

  • 相关阅读:
    学习进度10
    阅读笔记07
    构建之法阅读笔记06
    学习进度09
    构建之法阅读笔记05
    团队项目个人每日总结(4.27)
    学习进度08
    构建之法阅读笔记04
    写好一份技术简历很重要
    技术人员的发展之路
  • 原文地址:https://www.cnblogs.com/nanfengxiangbei/p/16083099.html
Copyright © 2020-2023  润新知