Java设计模式——责任链模式
来源:互联网 发布:淘宝联盟怎么微信推广 编辑:程序博客网 时间:2024/06/07 10:45
责任链模式,顾名思义,多个对象可以处理同一个请求,但是用哪个对象处理请求,是动态的,对象成链式结构,将请求一级一级向下传,处理则截断,否则继续向下传递,这就是责任链模式。
android里的屏幕触摸事件就是用的这种模式,父布局先收到触摸事件,如果父布局选择处理,子view则收不到触摸事件,反之父布局将事件传给子布局,后面有时间我会写一篇关于android触摸事件传递的源码讲解,在这之前先了解一下责任链模式。
先写一个抽象类作为父类:
public abstract class EventHandler { public EventHandler eventHandler;//下一个节点 public abstract void doSomething(String name);//待处理的请求}
然后创建三个可以处理同一个请求的对象:
public class MyHandler1 extends EventHandler { @Override public void doSomething(String name) { if ("MyHandler1".equals(name)) { Log.e("tag", "MyHandler1 处理了事件"); } else { if (eventHandler != null) eventHandler.doSomething(name); } }}
public class MyHandler2 extends EventHandler { @Override public void doSomething(String name) { if ("MyHandler2".equals(name)) { Log.e("tag", "MyHandler2 处理了事件"); } else { if (eventHandler != null) eventHandler.doSomething(name); } }}
public class MyHandler3 extends EventHandler { @Override public void doSomething(String name) { if ("MyHandler3".equals(name)) { Log.e("tag", "MyHandler3 处理了事件"); } else { if (eventHandler != null) eventHandler.doSomething(name); } }}
好了,不用解释什么,代码几乎都是一样的,使用起来很简单:
MyHandler1 handler1 = new MyHandler1(); MyHandler2 handler2 = new MyHandler2(); MyHandler3 handler3 = new MyHandler3(); //设置MyHandler1的下一个节点 handler1.eventHandler = handler2; //设置MyHandler2的下一个节点 handler2.eventHandler = handler3; handler1.doSomething("MyHandler2");
传入MyHandler2,这个事件将会被MyHandler2处理,并且截断不再传给MyHandler3
阅读全文
1 0
- Java设计模式—责任链模式
- java设计模式——责任链
- JAVA设计模式学习20——责任链模式
- JAVA设计模式学习——责任链模式
- JAVA设计模式——责任链模式
- Java设计模式——责任链模式
- 【JAVA设计模式08】——责任链模式
- Java设计模式之——责任链模式
- Java设计模式12——责任链模式
- Java设计模式——责任链模式
- Java设计模式12——责任链模式
- java行为型设计模式——责任链模式
- JAVA设计模式—责任链模式(Chain Of Responsibility)
- 设计模式——责任链模式
- 设计模式——责任链模式
- 设计模式——责任链模式
- 设计模式——责任链模式
- 设计模式——责任链模式
- Android PathEffect 效果使用
- ZJU1037-Gridland
- Spark参数配置
- map集合
- MapReduce读写hbase
- Java设计模式——责任链模式
- WebService之CXF介绍
- ITIL 2011服务管理与认证读书笔记一——IT服务管理与ITIL
- 找朋友
- 顺序查找法
- drools 嵌套对象的处理
- ThreadLocal
- Linux常用命令-
- TabLayout使用二