责任链模式

一、责任链模式概述

职责链模式的英文翻译是 Chain Of Responsibility Design Pattern。在 GoF 的《设计模式》中,它是这么定义的:将请求的发送和接收解耦,让多个接收对象都有机会处理这个请求。将这些接收对象串成一条链,并沿着这条链传递这个请求,直到链上的某个接收对象能够处理它为止。

其本质就是将多个处理器作为一个链条,统一处理一个请求。

二、责任链的实现方式

2.1 链表

链表的实现方式比较复杂。如图:
在这里插入图片描述
将传入的第一个HandlerA作为头,然后内部的set方法为下一个的HandlerB,尾指向HandlerB,当继续有处理器add的时候,将其添加到HandlerBset方法中,然后尾指向HandlerC,以此类推。

我们设计的责任链HandlerChain的执行方法,将会先执行A,如果执行失败,则会调用里面的B,如果B再失败,调用C,如链条一样传动调用。

首先定义一个抽象处理器类,并使用模板设计模式进行重构。

/**
 * 处理器:子类去处理执行,如果处理完毕则结束;否则,交给下一个处理器执行
 */
public abstract class Handler {
   

    /**
     * 判断是否处理完毕
     */
    private boolean isSuccess = false;

    /**
     * 注入子类处理器
     */
    private Handler handler = null;
    public void setHandler(Handler handler) {
   
        this.handler = handler;
    }

    /**
     * 【模板设计模式】提供一个共性方法,当子类执行完毕后,判断是否执行完成
     * 是,结束
     * 否,交给下一个处理器
     */
    public void handle() {
   
        isSuccess = doHandle(); //执行的是本Handler方法
        if (!isSuccess && null != handler) 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值