java设计模式13(责任链模式)

在系统中如果存在多个对象可以处理同一请求,则可以通过责任链模式将这些处理请求的对象连成一条链,让请求沿着该链进行传递。如果链上的对象可以处理该请求则进行处理,否则将请求转发给下一个对象来处理。

责任链模式的定义:避免将一个请求的发送者与接收者耦合在一起,让多个对象都有机会处理请求。将接收请求的对象连接成一条链,并且沿着这条链传递请求,直到有一个对象能够处理它为止。

责任链模式的结构和实现:
1.Handler(抽象处理者):定义了一个处理请求的接口,且每一个处理者的下家也是处理者,所以在抽象处理者类中定义了一个抽象处理者对象作为其对下一个处理者的引用,通过该引用形成一条链。

public abstract class Handler {
    
    protected Handler successor;
    
    public void setSuccessor(Handler successor) {
        this.successor = successor;
    }
    
    public abstract void handlerRequest(String request);

}

2.ConcreteHandler(具体处理者):它是抽象处理者的子类,可以处理用户的请求,在具体处理类中实现了抽象处理者中定义的抽象请求处理方法,在处理前需要判断,满足条件则处理,否则向下传递请求。

public class ConcreteHandler extends Handler {

    @Override
    public void handlerRequest(String request) {
        if("条件满足".equals(request)) {
            System.out.println(request+"处理业务!");
        }else {
            this.successor.handlerRequest(request);
        }
    }

}
public class ConcreteHandlerA extends Handler {

    @Override
    public void handlerRequest(String request) {
        if("条件满足".equals(request)) {
            System.out.println(request+"处理业务!");
        }else {
            this.successor.handlerRequest(request);
        }
    }

}

3.Test:

public class Test {

    public static void main(String[] args) {
        Handler handlerA, handler;
        handler = new ConcreteHandler();
        handlerA = new ConcreteHandlerA();
        
        handler.setSuccessor(handlerA);
        
        handler.handlerRequest("条件满足");
    }

}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 目录 本文的结构如下: 引言 什么是责任链模式 模式的结构 典型代码 代码示例 纯与不纯的责任链模式 优点和缺点 ...
    w1992wishes阅读 1,285评论 4 14
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,144评论 1 32
  • javascript设计模式与开发实践 设计模式 每个设计模式我们需要从三点问题入手: 定义 作用 用法与实现 单...
    穿牛仔裤的蚊子阅读 4,249评论 0 13
  • 定义 责任链模式是一种对象的行为模式。在责任链模式中,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求...
    步积阅读 2,080评论 1 5
  • 清明时节雨纷纷, 路上行人欲断魂, 父母在世常孝顺, 胜过死后空祭坟, 山珍海味满灵桌, 冥钱烧得满天昏。 如此排...
    河北南和刘志玉阅读 197评论 2 3