Android 设计模式学习(三)责任链模式应用实例

本文详细介绍了责任链设计模式,包括定义、UML类图和使用场景。通过报销审批的例子,阐述了如何创建责任链以及如何在Android中应用此模式,特别是讲解了在View事件分发中的责任链模式。文章最后总结了责任链模式的优缺点。
摘要由CSDN通过智能技术生成

一、责任链模式介绍

责任链模式(Iterator Pattern),是行为型设计模式之一。生活中常见的锁链,就是由一个个圆角长方形的铁环串起来的结构。对于链式结构,每个节点都可以被拆开再连接,因此,链式结构也具有很好的灵活性。

将这样一种结构应用于编程领域,将每一个节点看作是一个对象,每一个对象拥有不同的处理逻辑,将一个请求从链式的首端发出,沿着链的路径依次传递给每一个节点对象,直至有对象处理这个请求为止,我们将这样的一种模式称为责任链模式。
在这里插入图片描述

二、责任链模式定义

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

责任链模式的使用场景

  • 多个对象可以处理同一请求,但具体由哪个对象处理则在运行时动态决定。

  • 在请求处理者不明确的情况下向多个对象中的一个提交一个请求。

  • 需要动态指定一组对象处理请求。

三、责任链模式UML类图

角色介绍

  • 抽象处理者(Handler)角色:定义出一个处理请求的接口。如果需要,接口可以定义 出一个方法以设定和返回对下家的引用。这个角色通常由一个Java抽象类或者Java接口实现。上图中Handler类的聚合关系给出了具体子类对下家的引用,抽象方法handleRequest()规范了子类处理请求的操作。

  • 具体处理者(ConcreteHandler)角色:具体处理者接到请求后,可以选择将请求处理掉,或者将请求传给下家。由于具体处理者持有对下家的引用,因此,如果需要,具体处理者可以访问下家。

四、责任链模式实现案例

这个例子我觉得很贴切。我们在公司有各种原因需要报销费用,首先我们要找我们的上级领导去审批,报销额度如果在领导的权限范围内,那就审批通过,否则领导在找自己的上级去审批,以此类推。

1、抽象领导类

public abstract class Leader {
   
  /**
   * 上级领导处理者
   */
  protected Leader nextHandler;
  /**
   * 处理报账请求
   * @param money 能批复的报账额度 
   */
  public final void handleRequest(int money){
   
    System.out.println(getLeader());
    if(money <=limit()){
   
      handle(money);
    }else{
   
      System.out.println("报账额度不足,提交领导");
      if(null != nextHandle
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值