设计模式中的车轮战-责任链模式
责任链模式在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
public class Handler1 extends AbstractHandler {@Overrideprotected void handle(Request request) {System.out.println("handler1 handle it");}@Overrideprotected int getHandlerLevel() {return 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)—— 责任链模式(Chain of Responsibility Pattern)
文章目录 1.简介 2.使用场景 3.示例 4.变种 参考文献 1.简介 经常听身边的同事说其在项目中用到了责任链模式,今天就来学习一下什么是责任链模式. 责任链模式(Chain of Respons ...
- 设计模式在Netty中的应用-责任链模式源码举例
责任链:是指多个对象都有机会处理同一个请求,从而避免请求的发送者和接收者之间的耦合关系.然后,将这些对象连成一条链,并且沿着这条链往下传递请求,直到有一个对象可以处理它为止.在每个对象处理过程中,每个 ...
- 设计模式(四)责任链模式——责任链模式结构
定义 责任链是行为型设计模式的一种,通过前一个处理者记录下一个处理者的方式形成一条处理链.客户端在调用时只需要将请求传递到责任上即可,无需关注链路中的具体的传递过程.而链路中内部的处理,是按照前一个处 ...
- Android设计模式详解之责任链模式
前言 责任链模式是行为型设计模式: 定义:使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止. 使用场景: 多 ...
- Java设计模式(九)责任链模式 命令模式
(十七)责任链模式 责任链模式的目的是通过给予多个对象处理请求的机会,已解除请求发送者与接受者之间的耦合关系.面对对象的开发力求对象之前保持松散耦合,确保对象各自的责任最小化.这种设计能够使得系统更加 ...
- Spring中如何使用责任链模式
2019独角兽企业重金招聘Python工程师标准>>> 关于责任链模式,其有两种形式,一种是通过外部调用的方式对链的各个节点调用进行控制,从而进行链的各个节点之间的切换:另一种是链的 ...
- 设计模式第七讲-责任链模式
简介 责任链模式的定义:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系 将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止. 图例 责任链-根据事情大小来决 ...
- 设计模式(五)责任链模式
一.什么是责任链模式? 责任链就是从一个起点发起请求,然后沿着任务链依次传递给每一个节点上的对象,直到有一个节点处理这个请求为止. 二.责任链模式实例实现? 1 public abstract ...
- 设计模式(三)- 责任链模式
职责链模式 文章目录 职责链模式 1.职责链模式 1.介绍 2.应用实例 代码 1.员工提交请求类:LeaveRequest 2. 抽象请假处理类:AbstractLeaveHandler 3.直接主 ...
最新文章
- 小米用户画像实战(附48页PPT)
- 为什么在 Verilog HDL 设计中一定要用同步而不能用异步时序逻辑?
- Intel汇编程序设计-整数算术指令(下)
- Android Support v4、v7、v13 介绍
- php把字符串转为utf-8
- python 数据模型
- 富文本编辑器 java_HtmlBox富文本编辑器的使用
- dnfdpl服务器维护了,2019DNF心悦DPL赛事活动地址 强化器和时空石没了
- 跨平台开源集成开发环境Eclipse
- html5与access连接数据库操作,access是一个什么数据库?
- Mac版的axure原型设计软件
- FieldII仿真之常用命令汇总
- 小米miui开发版系统获取root权限的方法
- 物质模拟器5.0版 新增炸药及可以连续爆炸
- Linux 5.19 迎来首个候选版本,Linus:多平台 Linux 内核“差不多完成了”
- Python实战案例:金庸的功夫流派、人物关系的分析案例(上)
- ASO优化|第一期:想吃鸡?靠的就是这份详情页优化攻略
- 深蓝词库转换1.9发布mdash;mdash;支持英库拼音、搜狗bin格式、FIT、中州韵等
- 基于STM32的CAN总线通信学习笔记
- 算法与程序设计(二):递归