设计模式之责任链模式

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));
    }
    
}
相关推荐
cpp_learners6 小时前
C++ 实现责任链模式(Chain of Responsibility):从一堆 if-else 到可插拔的处理管道
开发语言·c++·责任链模式
YHL7 小时前
🎯 JavaScript 单例模式(Singleton Pattern)—— 从理论到实战
javascript·设计模式
2401_868534788 小时前
网络环境规划核心考点全梳理
网络·设计模式
feiyu_gao12 小时前
Cocreation Framework:一套给所有人的 AI 协作思考系统
设计模式·aigc·ai编程
善良勤劳勇敢而又聪明的老杨1 天前
【AI编程系列】MCP 常用设计模式解读
设计模式·ai编程
geovindu2 天前
java: Strategy Pattern
java·开发语言·后端·设计模式·策略模式·行为模式
码匠许师傅2 天前
【设计模式精讲】29.行为型模式总结与对比(Behavioral Patterns Summary)
c++·设计模式·uml
geovindu2 天前
CSharp: Observer Pattern
开发语言·后端·观察者模式·设计模式·c#·.netcore·行为模式
YHHLAI3 天前
NestJS 后端开发实战:从设计模式到 CRUD 全栈
设计模式
2401_868534783 天前
长远目标 Long-term Goal 老题沿用
设计模式·需求分析