设计模式之责任链模式

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));
    }
    
}
相关推荐
晚安code26 分钟前
设计模式入门:吃透 SOLID 原则与迪米特法则,再学 5 个高频模式
后端·设计模式
染指11104 小时前
135.Agent-多Agent框架-LangChain多智能体(SubAgents子代理)
数据库·人工智能·设计模式·langchain·agent·agents
路弥行至1 天前
【Head First 设计模式】第 2 章:观察者模式 —— 用现代 C++ 重新解读“交互对象的松耦合
c++·经验分享·笔记·观察者模式·设计模式·入门教程·headfirst
YYYing.1 天前
【设计模式系列 (九) 】装饰器模式
c++·后端·设计模式·装饰器模式·c/c++
沫璃染墨1 天前
《从零入门Linux系统篇(五十六):线程篇·九——生产者消费者模型:从条件变量到BlockingQueue实现》
linux·服务器·c++·驱动开发·设计模式·架构·系统架构
c萱2 天前
AI产品经理——01基础认知篇
设计模式·prompt·aigc·产品经理·ai编程·gitcode·ai-native
YYYing.2 天前
【设计模式系列 (八) 】组合模式
c++·后端·设计模式·组合模式·c/c++
geovindu3 天前
rust: Composite Pattern
开发语言·后端·设计模式·rust·组合模式
YYYing.3 天前
【设计模式系列 (七) 】桥接模式
c++·后端·设计模式·桥接模式
阿狗童鞋4 天前
设计模式实战指南
设计模式