java之责任链模式

一、简介

责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,它允许多个对象有机会处理一个请求。请求沿着处理者链传递,直到某个处理者决定处理此请求。

二、技术实现

2.1 Handler
java 复制代码
public interface Handler{
    void handle(Request req, Response resp, Chain chain);
}
2.2 Chain
java 复制代码
public class Chain{
   
    private List<Handler> handlers;
    
    private int index;

    public Chain(List<Handler> handlers){

         this.handlers = handlers;

    }

   
    public void next(Request req, Response resp){
        
        if (index + 1 < handlers.size()){

            handlers.get(index++).handle(req, resp, this);
         
        }

    }
}
2.3 Handler 实现
java 复制代码
public LogHandler implements Handler{

    @Override
    public void Handle (Request req, Response resp, Chain chain){
        long start = System.currentTimeStamps();
        chain.next(req,resp);
        log.info("request:{},response:{}, duration:{}",req, resp, System.currentTimeStamps() - start);         
    }
}
相关推荐
Chen_harmony12 分钟前
十九、数据在内存中的存储
c语言·开发语言
basketball61612 分钟前
C 的 malloc/free 与 C++ 的 new/delete 一些区别
c语言·开发语言·c++
iiiiyu13 分钟前
⾯向对象和集合编程题
java·大数据·开发语言·数据结构·编程语言
超級二蓋茨13 分钟前
asp.net core中JwtBearerEvents中几个事件的生命周期
java·服务器·asp.net
Full Stack Developme14 分钟前
Spring-web 解析
java·前端·spring
郝学胜-神的一滴16 分钟前
Qt 高级开发 006: 架构全解 + 高效学习指南
开发语言·c++·qt·程序人生·架构
Achou.Wang24 分钟前
Concurrency patterns - Go 并发模式
开发语言·后端·golang
存在morning25 分钟前
【GO语言开发实践】三 GO 工程化快速上手
开发语言·后端·golang
devilnumber27 分钟前
如何在java的Lambda中安全地修改外部变量?
java·安全·lambda
大得36927 分钟前
langchain使用
java·python·langchain