责任链模式在Android中的应用莫过于事件分发了,ViewGroup对事件分别给子View,从ViewTree的顶部至上而下地进行处理,直到事件被消化为止,这种方法在Android广播中也能看到

责任链模式的实现分为以下几个部分

请求者

public  class Request {private Object object;private int RequestLevel;public Request(Object object,int requestLevel) {this.object = object;this.RequestLevel = requestLevel;}public Object getObject() {return object;}public int getRequestLevel() {return RequestLevel;}
}

这里的object在实际开发当中我们可以换成其他自定义的对象,如Android中的Message和Handler那样

抽象处理者

public abstract class AbstractHandler {private AbstractHandler nextHandler;public final void handleRequest(Request request) {if (getHandlerLevel() == request.getRequestLevel()) {handle(request);} else {if (nextHandler != null) {nextHandler.handleRequest(request);} else {System.out.println("No handler can handle it!");}}}public void setNextHandler(AbstractHandler nextHandler) {this.nextHandler = nextHandler;}protected abstract int getHandlerLevel();protected abstract void handle(Request request);
}

处理者

  1. 处理者1
public class Handler1 extends AbstractHandler {@Overrideprotected void handle(Request request) {System.out.println("handler1 handle it");}@Overrideprotected int getHandlerLevel() {return 1;}
}
  1. 处理者2
public class Handler2 extends AbstractHandler {@Overrideprotected int getHandlerLevel() {return 2;}@Overrideprotected void handle(Request request) {System.out.println("handler2 handle it");}
}

使用

public class Main {public static void main(String[] args) {AbstractHandler handler1 = new Handler1();AbstractHandler handler2 = new Handler2();handler1.setNextHandler(handler2);Request request = new Request("request",2);handler1.handleRequest(request);}
}

这样处理事件就会沿着责任链一个个下去,直到被处理者处理或没有处理者为止

设计模式中的车轮战-责任链模式相关推荐

  1. 行为型设计模式(1)—— 责任链模式(Chain of Responsibility Pattern)

    文章目录 1.简介 2.使用场景 3.示例 4.变种 参考文献 1.简介 经常听身边的同事说其在项目中用到了责任链模式,今天就来学习一下什么是责任链模式. 责任链模式(Chain of Respons ...

  2. 设计模式在Netty中的应用-责任链模式源码举例

    责任链:是指多个对象都有机会处理同一个请求,从而避免请求的发送者和接收者之间的耦合关系.然后,将这些对象连成一条链,并且沿着这条链往下传递请求,直到有一个对象可以处理它为止.在每个对象处理过程中,每个 ...

  3. 设计模式(四)责任链模式——责任链模式结构

    定义 责任链是行为型设计模式的一种,通过前一个处理者记录下一个处理者的方式形成一条处理链.客户端在调用时只需要将请求传递到责任上即可,无需关注链路中的具体的传递过程.而链路中内部的处理,是按照前一个处 ...

  4. Android设计模式详解之责任链模式

    前言 责任链模式是行为型设计模式: 定义:使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止. 使用场景: 多 ...

  5. Java设计模式(九)责任链模式 命令模式

    (十七)责任链模式 责任链模式的目的是通过给予多个对象处理请求的机会,已解除请求发送者与接受者之间的耦合关系.面对对象的开发力求对象之前保持松散耦合,确保对象各自的责任最小化.这种设计能够使得系统更加 ...

  6. Spring中如何使用责任链模式

    2019独角兽企业重金招聘Python工程师标准>>> 关于责任链模式,其有两种形式,一种是通过外部调用的方式对链的各个节点调用进行控制,从而进行链的各个节点之间的切换:另一种是链的 ...

  7. 设计模式第七讲-责任链模式

    简介 责任链模式的定义:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系 将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止. 图例 责任链-根据事情大小来决 ...

  8. 设计模式(五)责任链模式

    一.什么是责任链模式?     责任链就是从一个起点发起请求,然后沿着任务链依次传递给每一个节点上的对象,直到有一个节点处理这个请求为止. 二.责任链模式实例实现? 1 public abstract ...

  9. 设计模式(三)- 责任链模式

    职责链模式 文章目录 职责链模式 1.职责链模式 1.介绍 2.应用实例 代码 1.员工提交请求类:LeaveRequest 2. 抽象请假处理类:AbstractLeaveHandler 3.直接主 ...

最新文章

  1. 小米用户画像实战(附48页PPT)
  2. 为什么在 Verilog HDL 设计中一定要用同步而不能用异步时序逻辑?
  3. Intel汇编程序设计-整数算术指令(下)
  4. Android Support v4、v7、v13 介绍
  5. php把字符串转为utf-8
  6. python 数据模型
  7. 富文本编辑器 java_HtmlBox富文本编辑器的使用
  8. dnfdpl服务器维护了,2019DNF心悦DPL赛事活动地址 强化器和时空石没了
  9. 跨平台开源集成开发环境Eclipse
  10. html5与access连接数据库操作,access是一个什么数据库?
  11. Mac版的axure原型设计软件
  12. FieldII仿真之常用命令汇总
  13. 小米miui开发版系统获取root权限的方法
  14. 物质模拟器5.0版 新增炸药及可以连续爆炸
  15. Linux 5.19 迎来首个候选版本,Linus:多平台 Linux 内核“差不多完成了”
  16. Python实战案例:金庸的功夫流派、人物关系的分析案例(上)
  17. ASO优化|第一期:想吃鸡?靠的就是这份详情页优化攻略
  18. 深蓝词库转换1.9发布mdash;mdash;支持英库拼音、搜狗bin格式、FIT、中州韵等
  19. 基于STM32的CAN总线通信学习笔记
  20. 算法与程序设计(二):递归

热门文章

  1. 少儿编程mta证书_少儿编程项目计划书
  2. 教你如何进行FTP服务设置
  3. php中type是什么意思,type-b接口是什么意思
  4. 浏览器的渲染机制,白屏和FOUC
  5. 用cygwin下载安装ncview(windows 下安装ncview)
  6. python list转string_【幼儿园级】0基础学python一本通(上)——AI未来系列1
  7. php实现的经典算法40例
  8. 360导航侵占chrome浏览器
  9. 支持百度学术搜索!Python文献超级搜索下载工具又更新了!
  10. 交错TCM图腾柱无桥PFC仿真