设计模式之责任链模式

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));
    }
    
}
相关推荐
云深处@6 小时前
【C++设计模式】命令模式
c++·设计模式·命令模式
用户6919026813396 小时前
Agent 上下文记忆原理
设计模式·架构·设计
Java后端的Ai之路7 小时前
02、Python普通工厂模式
开发语言·人工智能·python·设计模式·普通工厂模式
Java后端的Ai之路8 小时前
01、Python - 设计模式介绍
java·人工智能·python·设计模式·通用
小此方8 小时前
Linux加餐(二):藏在Linux中的设计模式(二)单例模式与线程池
linux·单例模式·设计模式
LayZhangStrive1 天前
设计模式(二)装饰器模式、代理模式(待更新)
设计模式·代理模式·装饰器模式·后端开发
AI人工智能+电脑小能手2 天前
大白话说Java设计模式-28-模板方法模式(业务实战篇)
java·设计模式·模板方法模式·spring源码·订单系统·代码复用
leeyi2 天前
两个 Agent 怎么协作:Host-Worker 模式(第91篇-E77)
设计模式·agent·ai编程
AI人工智能+电脑小能手3 天前
大白话说Java设计模式-26-策略模式(业务实战篇)
java·spring·设计模式·策略模式·支付系统·算法切换