设计模式之责任链模式

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));
    }
    
}
相关推荐
.Hypocritical.17 小时前
JUC + 三大设计模式(单例、工厂、代理)
设计模式·juc·1024程序员节
是2的10次方啊19 小时前
设计模式与生活②:你只管点外卖,别管堡怎么做
设计模式
是2的10次方啊2 天前
设计模式与生活①:你的脸,为什么不能有第二个?
设计模式
高晶2 天前
ARM 嵌入式 Linux 命令系统 BusyBox 实战指南
linux·设计模式·程序员
高晶2 天前
语音合成与变声技术十大业务场景落地实战:从电商直播到规模化生产
设计模式·程序员
博风2 天前
19、设计模式应用举例:桥接模式:制作电视节目
设计模式·桥接模式
知守观2 天前
从 4 套 PDF 库的混战,聊聊老项目的依赖管理与“静默失败”
java·后端·设计模式
geovindu3 天前
rust: Mediator Pattern
开发语言·后端·设计模式·rust·中介者模式·行为模式
SENKS_DIGITAL3 天前
金属加工遇上数字化:通快展厅里的工业蜕变-森克思科技
科技·设计模式·展厅设计·展馆设计·科技展厅设计·展览设计·企业展厅设计
flower9803233 天前
C++消息总线软件开发框架AI重构版
c++·设计模式·架构