【责任链模式】—— 责任处理分级与解耦

责任链 模式,将处理请求的对象链接成一条链,并根据链来传递请求,让符合条件的对象来处理请求。

一、关键点

1)先看下这个模式点关键点:

业务处理链: 该模式就是将处理请求的对象按照一定的条件串成来“链子”,从“链子”的指定节点开始,按条件“递归执行”;

分级与解耦:该“链子”是按照一定的条件进行来“分级”,从而即能让“链子”间灵活的调用,调用者不需要关系“链”的执行机制,从而达到解耦的目的。

 

2)我们再来看下它的类图关系:

Handler:处理者的抽象对象;

ConcreteHandler:具体的处理者角色。

 

 

二、实现

2.1 Handler 抽象处理对象

public abstract class Handler {
    protected Handler mSuccessor;

    public void setSuccessor(Handler handler) {
        mSuccessor = handler;
    }

    public abstract void handleRequest(int request);
}

2.2 具体的处理者角色ConcreteHandler

public class ConcreteHandlerA extends Handler {

    @Override
    public void handleRequest(int request) {
        if (request > 1) {
            /** handle somethings */
        } else if (null != mSuccessor) {
            mSuccessor.handleRequest(request);
        }
    }
}

public class ConcreteHandlerB extends Handler {

    @Override
    public void handleRequest(int request) {
        if (request > 2) {
            /** handle somethings */
        } else if (null != mSuccessor) {
            mSuccessor.handleRequest(request);
        }
    }
}

2.3 客户端角色Client

public class Client {

    public static void main(String[] args) {

        ConcreteHandlerA handlerA = new ConcreteHandlerA();
        ConcreteHandlerB handlerB = new ConcreteHandlerB();

        handlerA.setSuccessor(handlerB);
        handlerB.setSuccessor(handlerA);

        handlerA.handleRequest(1);
    }
}

 

 

三、小结

3.1  。该模式的特点就是将业务的处理抽象成链式的方式,并根据一定的条件进行“递归”处理;

3.2 解耦。该模式的业务处理以链式的方式进行,客户端不需要知道链式的细节,从而达到解耦的目的。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值