package com.solution.rule.handler; import cn.hutool.core.util.ObjectUtil; import com.solution.rule.domain.RuleParam; /** * 规则链抽象类 */ public abstract class AbstractRuleChainHandler { private AbstractRuleChainHandler nextHandler; /** * 执行过滤方法 * @param ruleParam * @return */ public abstract RuleParam doHandler(RuleParam ruleParam); /** * 执行下一个处理器 * @param ruleParam * @return */ public RuleParam doNextHandler(RuleParam ruleParam){ if(ObjectUtil.isEmpty(nextHandler) || ObjectUtil.isNotEmpty(ruleParam)){ return ruleParam; } return nextHandler.doHandler(ruleParam); } /** * 设置下游handler * @param nextHandler */ public void setNextHandler(AbstractRuleChainHandler nextHandler) { this.nextHandler = nextHandler; } }