设计模式之责任链模式

简介: 定义责任链模式是结构型设计模式的一种,它将请求的发送者与接收者解耦,给多个对象处理请求的机会。请求沿着链传递,直到链上的接收对象可以处理该请求为止。

定义


责任链模式是结构型设计模式的一种,它将请求的发送者与接收者解耦,给多个对象处理请求的机会。请求沿着链传递,直到链上的接收对象可以处理该请求为止。


场景


责任链模式在框架中使用较多,可以为框架提供扩展点,让框架的使用者基于扩展点扩展新的功能,如 Servlet 规范中的 Filter、Spring 的拦截器,都使用了责任链模式。


实现


根据责任链的定义,使用 Java 代码实现如下。


public interface IHandler {  
    boolean handle();  
}
public class HandlerChain {
    private List<IHandler> handlerList = new ArrayList<>();
    public void addHandler(IHandler handler) {
        this.handlerList.add(handler);
    }
    public void handle(){
        for (IHandler handler : handlerList) {
            if(handler.handle()){
                break;
            }
        }
    }
}

使用代码如下。

public class App {
    public static void main(String[] args) throws IOException {
        HandlerChain chain=new HandlerChain();
        chain.addHandler(new IHandler() {
            @Override
            public boolean handle() {
                return false;
            }
        });
        chain.handle();
    }
}

上面的实现使用列表保存链中的每个接收对象,换成链表也可以,使用列表实现则相对简单。事实上责任链模式还有一种变体,链上的所有接收对象都可以处理请求。

目录
相关文章
|
3月前
|
设计模式 Java
【设计模式系列笔记】责任链模式
责任链模式是一种行为设计模式,它允许你将请求沿着处理者链进行传递,直到有一个处理者能够处理它。每个处理者都有一个对下一个处理者的引用。责任链模式常用于处理请求的场景,例如在一个请求需要经过多个步骤或者多个对象来处理的情况下。
51 0
|
3月前
|
设计模式 Java
【设计模式】责任链模式
【设计模式】责任链模式
|
3月前
|
设计模式
【设计模式】责任链模式
【1月更文挑战第27天】【设计模式】责任链模式
|
3月前
|
设计模式 Dubbo Java
聊聊Java设计模式-责任链模式
责任链模式(Chain Of Responsibility Design Pattern),也叫做职责链,是将请求的发送和接收解耦,让多个接收对象都有机会处理这个请求。当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。
102 1
聊聊Java设计模式-责任链模式
|
10月前
|
设计模式 C++
设计模式之责任链模式(C++)
设计模式之责任链模式(C++)
|
3月前
|
设计模式
设计模式之责任链模式
设计模式之责任链模式
|
2月前
|
设计模式 Java 中间件
深入探索Java设计模式:责任链模式解析与实践
深入探索Java设计模式:责任链模式解析与实践
21 0
|
2月前
|
设计模式 Java
Java设计模式之责任链模式详解
Java设计模式之责任链模式详解
|
2月前
|
设计模式 架构师 NoSQL
设计模式第六讲:责任链模式和迭代器模式详解
遍历任务交由迭代器完成,这简化了聚合类。  C. 它支持以不同方式遍历一个聚合,甚至可以自定义迭代器的子类以支持新的遍历。
150 0
|
3月前
|
设计模式 Java
【设计模式】JAVA Design Patterns——Chain of responsibility(责任链模式)
【设计模式】JAVA Design Patterns——Chain of responsibility(责任链模式)