您的位置:首页 > 汽车 > 新车 > 建设局官方网站_枸橼酸西地那非片是什么_网络营销推广方式有哪些_网站分析工具

建设局官方网站_枸橼酸西地那非片是什么_网络营销推广方式有哪些_网站分析工具

2025/4/30 5:03:44 来源:https://blog.csdn.net/lqw_qgf/article/details/146889416  浏览:    关键词:建设局官方网站_枸橼酸西地那非片是什么_网络营销推广方式有哪些_网站分析工具
建设局官方网站_枸橼酸西地那非片是什么_网络营销推广方式有哪些_网站分析工具

一、定义:

        使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系将这些对象连城一条链,并沿着这条链传递该请求,只到有对象处理它为止。

二、模式结构:

        抽象处理者(Handler):定义处理请求的接口,包含处理方法和设置下一个处理者的引用。

        具体处理者(ConcreteHandler):实现抽象接口,决定是否处理请求或传递给链的下一个对象。

三、应用场景:

        1.事件处理:view的层级事件分发。

        2.网络拦截链:OkHttp请求的拦截器机制。

        3.权限校验:多级权限检查。

四、代码例子:

        1.定义抽象处理者

public abstract class LoggerHandler {
    protected LoggerHandler nextHandler;

    // 设置下一个处理器
    public void setNextHandler(LoggerHandler nextHandler) {
        this.nextHandler = nextHandler;
    }

    // 处理日志请求
    public abstract void handleLog(String message, int level);
}
        2.实现具体处理者

// INFO 级别日志处理器
public class InfoLogger extends LoggerHandler {
    @Override
    public void handleLog(String message, int level) {
        if (level <= LogLevel.INFO) {
            System.out.println("INFO: " + message); // 模拟处理逻辑
        } else if (nextHandler != null) {
            nextHandler.handleLog(message, level); // 传递给下一级
        }
    }
}

// DEBUG 级别日志处理器
public class DebugLogger extends LoggerHandler {
    @Override
    public void handleLog(String message, int level) {
        if (level <= LogLevel.DEBUG) {
            System.out.println("DEBUG: " + message);
        } else if (nextHandler != null) {
            nextHandler.handleLog(message, level);
        }
    }
}

// ERROR 级别日志处理器
public class ErrorLogger extends LoggerHandler {
    @Override
    public void handleLog(String message, int level) {
        if (level <= LogLevel.ERROR) {
            System.out.println("ERROR: " + message);
        } // 无需传递(链的末端)
    }
}

// 日志级别常量
class LogLevel {
    public static final int INFO = 1;
    public static final int DEBUG = 2;
    public static final int ERROR = 3;
}

        3.构建处理链

public class LoggerChain {
    public static LoggerHandler buildChain() {
        // 创建处理器实例
        LoggerHandler infoLogger = new InfoLogger();
        LoggerHandler debugLogger = new DebugLogger();
        LoggerHandler errorLogger = new ErrorLogger();

        // 设置链式关系
        infoLogger.setNextHandler(debugLogger);
        debugLogger.setNextHandler(errorLogger);

        return infoLogger; // 返回链的起点
    }
}
        4.使用责任链

public class Main {
    public static void main(String[] args) {
        LoggerHandler chain = LoggerChain.buildChain();

        // 测试日志处理
        chain.handleLog("App started", LogLevel.INFO);    // INFO: App started
        chain.handleLog("Network error", LogLevel.ERROR); // ERROR: Network error
        chain.handleLog("Debug data", LogLevel.DEBUG);    // DEBUG: Debug data
    }
}


五、优缺点:

优点:

        1.解耦请求发送者与处理者。

        2.动态调整处理顺序。

        3.符合单一职责原则。

缺点:

        1.请求可能未被处理。

        2.调试困难,需要跟踪链传递过程。

        3.性能损耗,长链影响效率。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com