All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.lulihu.designPattern.chain.HandlerResponsibilityChainResolver Maven / Gradle / Ivy

package net.lulihu.designPattern.chain;


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 责任链处理解析器
 *
 * @param 
 */
public interface HandlerResponsibilityChainResolver {

    Logger log = LoggerFactory.getLogger(HandlerResponsibilityChainResolver.class);

    /**
     * 当前对象是否支持给定的参数处理
     *
     * @param data 参数
     * @return true则处理 反之不处理
     */
    default boolean support(T data) {
        return true;
    }

    /**
     * 此方法对给定的参数进行程序处理
     *
     * @param data 参数
     */
    void resolve(T data) throws ChainEventException;

    /**
     * 此方法对给定的参数进行程序判断,是否还要交由下一个人处理
     *
     * @param data 参数
     * @return true则后续继续处理 反之链条结束
     */
    default boolean proceed(T data) {
        return true;
    }

    /**
     * 程序处理之后执行
     *
     * @param data 参数
     * @return 返回处理结果该结果将被下一个处理程序使用
     */
    default T after(T data) {
        return data;
    }


    /**
     * 处理程序发生可控异常时执行
     *
     * @param data 参数
     * @return true则后续继续处理 反之链条结束
     */
    default boolean error(T data, ChainEventException e) {
        log.error("处理程序发生例外...", e);
        return false;
    }

    /**
     * 程序执行结束进行最终处理,可以影响最终的返回值
     *
     * @param data 参数
     * @return 返回处理结果该结果将被下一个处理程序使用
     */
    default T result(T data) {
        return data;
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy