设计模式之责任链模式

java 复制代码
package com.ruijie.futurewindow.order.order.strategy.chain;

import com.ruijie.futurewindow.order.order.strategy.OrderModifyCommitValidateHandler;
import com.ruijie.futurewindow.order.order.strategy.model.ModifyCommitReviewContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;

import javax.annotation.PostConstruct;
import java.util.ArrayList;
import java.util.List;

/**
 * 修改订单规则校验处理器类
 *
 * @author Long Yu
 * @date 2024-05-30 21:16:03
 */
@Service
public class ModifyCommitOrderRuleValidateChainExecutor {
    
    public List<OrderModifyCommitValidateHandler> chainList = new ArrayList<>();
    
    @Autowired
    @Qualifier("seckillOrderDetailModifyValidateHandler")
    private OrderModifyCommitValidateHandler seckillOrderDetailModifyValidateHandler;
    
    @Autowired
    @Qualifier("orderComplianceVerificationValidateHandler")
    private OrderModifyCommitValidateHandler orderComplianceVerificationValidateHandler;
    
    @Autowired
    @Qualifier("composeOrderDetailModifyValidateHandler")
    private OrderModifyCommitValidateHandler composeOrderDetailModifyValidateHandler;
    
    @Autowired
    @Qualifier("minSaleCountModifyValidateHandler")
    private OrderModifyCommitValidateHandler minSaleCountModifyValidateHandler;
    
    @PostConstruct
    public void init() {
        // 初始化三个顺序未来考虑其他方式维护顺序
        chainList.add(seckillOrderDetailModifyValidateHandler);
        chainList.add(composeOrderDetailModifyValidateHandler);
        chainList.add(orderComplianceVerificationValidateHandler);
        chainList.add(minSaleCountModifyValidateHandler);
    }
    
    /**
     * 执行校验
     *
     * @param context 参数
     */
    public void execute(ModifyCommitReviewContext context){
        // 按照顺序逐个遍历校验处理
        chainList.forEach(handler -> handler.executeCheck(context));
    }
    
}
相关推荐
是2的10次方啊14 小时前
设计模式与生活㉑:一句“建议复查”,是好几句话拼出来的
设计模式
杯子不吃紫菜2 天前
LangGraph 体系实战(下):中断恢复、流式、子图与设计模式
单片机·嵌入式硬件·设计模式
是2的10次方啊2 天前
设计模式与生活⑳:楼里的事都找前台,你就再没见过师傅
设计模式
是2的10次方啊3 天前
设计模式与生活⑲:投影连不上,别急着换投影仪
设计模式
cjz38994 天前
规则树:把一百行if-else拆成一棵树
设计模式
Adellle4 天前
设计模式指南 (Java 版) ㊁
java·开发语言·设计模式
是2的10次方啊4 天前
设计模式与生活⑱:工资还没焐热,账单已经凑成一摞
设计模式
百思不得小李5 天前
一个复杂的动态表单是如何实现的
前端·设计模式
爱你真是太好了5 天前
上下文组成以及如何压缩
设计模式
freejackman5 天前
【工程化】从“单兵作战”到“多引擎架构”:基于门面模式的重构实战
大数据·数据库·hive·sql·测试工具·设计模式·架构