Android设计模式之责任链模式

责任链设计模式就是某一个事件沿着某一个链不断的向下传递,直到找到相应的处理者对其进行处理为止。

这里写图片描述

有些类似与一个链表的遍历过程,如果我们希望找到链表指定的某个元素,我们就需要从链表表头开始遍历,直到找到这个元素为止。

下面我们可以把它当做一个链表来看待。

下面我们看看对应的类图

这里写图片描述

Client:客户端

Handler:抽象处理者

ConcreteHandler:具体处理者

public abstract class Handler {
    // 为了形成一个链表的形式,所以必须保存下一个节点的引用
    protected Handler successor;

    // 设置该节点对象的下一个对象的引用
    public void setSuccessor(Handler successor) {
        this.successor = successor;
    }
    // 该节点处理方法
    public abstract void handlerRequest(int cost);
}
public class ConcreteHandler1 extends Handler {

    @Override
    public void handlerRequest(int cost) {
        // 如果cost为1,则该节点进行处理,否则交给下一节点处理
        if (cost = 1) {
                     System.out.println(this.getClass().getSimpleName()+" handler event");
        } else {
            if (this.successor!=null) {
              System.out.println(this.getClass().getSimpleName()+" post handler");
                this.successor.handlerRequest(cost);
            }
        }
    }
}

上面就是判断当前节点对象是否需要进行处理,如果不进行处理就把他传递给下一个节点对象进行处理。

public class ConcreteHandler2 extends Handler {
    @Override
    public void handlerRequest(int cost) {
        System.out.println(this.getClass().getSimpleName()+" handler event");
    }
}

下面是客户端代码,首先构造一个责任链,然后从第一个节点发送请求

Handler handler1=new ConcreteHandler1();
 Handler handler2=new ConcreteHandler2();
 //组装链
 handler1.setSuccessor(handler2);

 //发起请求
 handler1.handlerRequest(2000);

Android中的责任链模式

Android中的责任链模式其实很多,最经典的就是View的事件传递。

欢迎关注微信公众号:DroidMind
精品内容独家发布平台


呈现与博客不一样的技术干货

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值