Android 开发中常用设计模式解读之-责任链(拦截器)

本文解析Android开发中责任链模式的概念,通过实例解释如何使用该模式来构建拦截器。责任链模式旨在减少请求发送者与接收者间的耦合,通过将对象串联成链,请求沿链传递直到被处理。文章介绍了如何在Android中运用此模式,如在框架和实际项目中的应用,提升代码的可扩展性和可维护性。
摘要由CSDN通过智能技术生成

模式定义与设计解读

设计模式晦涩的定义总是难懂,但同时这些定义又有着独特的涵义。本文想通过最直观的例子,把这些晦涩的定义反应在代码层面上。代码是设计模式最直观的表达,当你看不懂定义时,代码会说话。希望这篇解读可以帮助到你。预计阅读10分钟。

定义

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

注意一下加粗的关键字,解读会重新定义这些难懂的定义。

解读

在生活经常存在一种场景,完成一件事情,需要串行执行几个步骤。比如把大象装冰箱,需要三个步骤。

  1. 把冰箱门打开
  2. 把大象装冰箱
  3. 把冰箱门关上

现在把这件事情抽象成代码,并与上文中的定义对应。

  • 请求指把大象装冰箱这件事情,对应一个数据结构 RequestContext
/**
 * 请求上下文
 */
public class RequestContext {

  public Elephant mElephant;//大象

  public Refrigerator mRefrigerator;//冰箱

  public RequestContext(Elephant elephant, Refrigerator refrigerator) {
    mElephant = elephant;
    mRefrigerator = refrigerator;
  }

  public static class Elephant{
  }

  public static class Refrigerator{
  }

}

  • 一条链比较好理解,但是比较难抽象。既然做这件事需要串行好几个步骤,链条上自然也是围绕请求展开,既需要有获取请求的方法RequestContext getContext(),也需要有执行请求的方法procceed(RequestContext context)。这个方法有开始执行的意思,也有请求串行传递后继续执行的意思。

proceed 英 [prə'siːd]
vi. 开始;继续进行;发生;

/**
 * 请求链
 */
public interface Chain {
  /**
   * 获取请求实体
   */
  RequestContext getContext();

  /**
   * 开始或继续执行请求。
   */
  void proceed(RequestContext context);

}

  • 对象指1.2.3操作大象和冰箱的三个步骤,可以把每次步抽象成一个处理请求的对象,万物皆对象。现在我们已经把请求封装在了链条里,那对于每个操作步骤,都直接来处理链条上的请求即可。
/**
 * 处理者
 */
public interface Handler {

  /**
   * 处理链条上的请求
   */
  void handle(Chain chain);

}

  • 发送者和接收者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值