package edu.whut.types.design.framework.link.model2.handler;

/**
 * 通用逻辑处理器接口 —— 责任链中的「节点」要实现的核心契约。
 *  T:请求参数类型，通常是不可变的命令 / 请求对象。
 *  D:动态上下文类型，在链路中传递可写信息。
 *  R:处理结果类型，返回非 null 表示链路命中并直接结束。
 */
public interface ILogicHandler<T, D, R> {

    /**
     * 默认的 next占位实现，方便节点若不需要向后传递时直接返回 null。
     */
    default R next(T requestParameter, D dynamicContext) {
        return null;
    }

    /**
     * 节点的核心处理方法。
     */
    R apply(T requestParameter, D dynamicContext) throws Exception;

}
