(08)责任链模式

概念

责任链中,每个层级都有自己的上一个层级,当自己处理不了时,把任务丢给上级处理。

责任链有点类似于Http请求的转发功能。用户只需要关注直接和自己对接的人,无关心后边具体的流程

  • 张三找A借100块钱,A自己刚好身上有100块,于是A就借给了张三。下次张三又来找A借10万块钱,由于A没有那么多钱,于是A找B借了10万块钱,A再把10万借给张三。
  • 张三只关注和A借钱,至于A如何拿到的钱张三是无感知的,这就是责任链模式。

实现方式

/**
 * 责任链
 */
public class Demo {
    public static void main(String[] args) {
        Handler handler = getHandler();
        handler.process(100);
        handler.process(10_0000);
    }

    public static Handler getHandler() {
        PersonA a = new PersonA();
        PersonB b = new PersonB();
        // 设置处理人层级关系
        a.setNextHandler(b);
        // 返回最初始的层级
        return a;
    }
}

// 处理人接口。每个具体的处理人都要实现该接口
abstract class Handler {
    Handler nextHandler;

    // 每个具体的处理人都要保存它的上级
    public void setNextHandler(Handler nextHandler) {
        this.nextHandler = nextHandler;
    }

    public abstract void process(int money);
}

// 具体处理人A
class PersonA extends Handler {
    @Override
    public void process(int money) {
        if (money <= 100) {
            System.out.println("张三找A借钱:" + money);
        } else {
            nextHandler.process(money);
        }
    }
}

// 具体处理人B
class PersonB extends Handler {
    @Override
    public void process(int money) {
        System.out.println("张三找A借钱,A又找到B借钱:" + money);
    }
}

张三找A借钱:100
张三找A借钱,A又找到B借钱:100000

posted @ 2021-11-22 10:09  、嘎路的米。  阅读(38)  评论(0)    收藏  举报