Netty(二、责任链模式)

责任链模式

该模式构造一系列分别担当不同职责类的对象来共同完成一个任务,这些类的对象之间像链条一样紧密联系,因此称为责任链模式。职责链将请求的发送者和请求的处理者解耦了。

优点

每个类只需要处理自己该处理的工作,不该自己处理的交由下一个对象完成
可以根据工作需要自由组合工作流程,如果流程发生改变,可以通过重新分配对象链便可以适应新的工作流程。
类与类之间可以以松耦合的方式加一组织

缺点

降低程序的性能。每个请求都是从链头遍历到链尾,当链比较长的时候,性能会大幅下降。
不易于调试。由于该模式采用了类似递归的方式,调试的时候逻辑比较复杂。
责任链模式流程图

代码

package com.fanyinhang.socket;

/**
 * @author fanyinhang
 * @version 1.0
 * @create 2019/10/10-22:09
 */
abstract class Handler{
    private Handler nextHandler;

    public Handler getNextHandler() {
        return nextHandler;
    }

    public void setNextHandler(Handler nextHandler) {
        this.nextHandler = nextHandler;
    }

    public abstract void requestHandler();
}
class ConcreteHandlerA extends Handler{

    @Override
    public void requestHandler() {
        System.out.println(this.getClass().getSimpleName()+"处理器处理");
        if(getNextHandler()!=null){
            getNextHandler().requestHandler();
        }
    }
}
class ConcreteHandlerB extends Handler{

    @Override
    public void requestHandler() {
        System.out.println(this.getClass().getSimpleName()+"处理器处理");
        if(getNextHandler()!=null){
            getNextHandler().requestHandler();
        }
    }
}
public class ChainPattern {
    public static void main(String[] args) {
        Handler handlerA=new ConcreteHandlerA();
        Handler handlerB = new ConcreteHandlerB();
        handlerA.setNextHandler(handlerB);
        handlerA.requestHandler();
    }
}

输出结果

ConcreteHandlerA处理器处理
ConcreteHandlerB处理器处理

应用场景

一个请求需要一系列的处理工作
业务流的处理
对系统进行扩展补充。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值