美文网首页
《Android源码设计模式解析与实战》读书笔记-责任链模式分析

《Android源码设计模式解析与实战》读书笔记-责任链模式分析

作者: appcompat_v7 | 来源:发表于2017-03-09 22:52 被阅读11次

责任链模式

介绍

对于链式结构,将每一个节点看做一个对象,每一个对象拥有不同的处理逻辑,将一个请求从链式的首端发出,沿着链的路径一次传递给一个节点对象,直至有对象处理这个请求为止,我们将这样一种模式成为责任链模式。

定义

使多个对象都有机会处理请求,从而避免了发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递改请求,直到有对象处理它为止。

使用场景

  • 多个对象可以处理同一个请求,但具体由哪个对象处理则在运行时动态决定。
  • 在请求处理者不明确的情况下向多个对象中的一个提交一个请求
  • 需要动态指定一组对象处理请求

基本程序

  • 抽象处理类
public abstract class Handler {
    protected Handler nextHandler;//下一节点处理者

    public abstract void handle(String condition);//处理函数
}

  • 具体处理者1
public class FirstHandler extends Handler {
    @Override
    public void handle(String condition) {
        if (condition.equals("FirstHandler")) {
            handle(condition);
        } else {
            nextHandler.handle(condition);
        }
    }
}
  • 具体处理者2
public class SecondHandler extends Handler {
    @Override
    public void handle(String condition) {
        if (condition.equals("SecondHandler")) {
            handle(condition);
        } else {
            nextHandler.handle(condition);
        }
    }
}
  • 客户类

    public class Client {
        public static void main(String[] args) {
            FirstHandler firstHandler = new FirstHandler();
            SecondHandler secondHandler = new SecondHandler();
            firstHandler.nextHandler = secondHandler;
            secondHandler.nextHandler = firstHandler;
            firstHandler.handle("SecondHandler");
        }
    }
    

角色介绍:

  • Handler :抽象处理者角色,声明一个请求处理的方法,并在其中保持一个对下一个处理节点的 Handler 对象的引用。
  • FirstHandler , SecondHandler : 具体处理者角色,对请求进行处理,如果不能处理则将请求转发给下一个节点处理。

Android 中应用

类似于 Android 中事件的分发处理, 有序广播。

总结

  • 优点: 对请求者和处理者关系解耦,提高代码灵活性,
  • 缺点:对请求处理者进行遍历影响性能。

相关文章

网友评论

      本文标题:《Android源码设计模式解析与实战》读书笔记-责任链模式分析

      本文链接:https://www.haomeiwen.com/subject/icgggttx.html