Javascript 责任链模式
来源:互联网 发布:有效工作时间 知乎 编辑:程序博客网 时间:2024/06/09 10:39
- 责任链模式可以用来消除请求的发送者和接受者之间的耦合。这是通过实现一个由隐式地对请求进行处理的对象组成的链而做到的。链中的每个对象可以处理请求,也可以将其传给下一个对象。javascript内部就是使用这个模式来处理时间捕获和冒泡的问题。
- 责任链模式中的角色: 发出者、接受者
- 责任链模式的流程:
- 发送者知道链中的第一个接受者,它向这个接收者发出来的请求;
- 每一个接收者都对请求进行分析,要么处理它,要么往下传递;
- 每一个接收者知道的其他对象只有一个,即它的下家对象;
- 如果没有任何的接收者处理请求,那么请求将从链上离开,不同的实现对此有不同的反应;
//模拟场景 -》:项目经理 :-》task 项目组(A B C D)//任务类var Assign = function(task){ this.task = task;};//接收任务的类var workFlow = function(assign){ this.assign = assign;}workFlow.prototype = { constructor:workFlow,//分析当前任务谁能去完成执行 len是个缓存,不用每次去遍历es filterHandler:function(es){ for(var i=0 ,len = es.length; i<len;i++){ if(this.assign.task === es[i].cando){ return es[i].todo();}}return; }};//处理者var Executor = function(name,cando){ this.name = name;//接收者的姓名 this.cando = cando;//擅长的任务};Executor.prototype = { constructor: Executor, todo:function(){ document.write(this.name+'开发'+this.cando);}};//4个接收者var e1 = new Executor('A','javascript');var e2 = new Executor('B','css');var e3= new Executor('C','java');var e4 = new Executor('D','sql');//实例化任务对象var assign = new Assign('java');//处理任务的实例var wf = new workFlow(assign);wf.filterHanlder([e1,e2,e3,e4]);
0 0
- Javascript 责任链模式
- JavaScript设计模式--责任链模式
- JavaScript学习之设计模式->责任链模式
- 16-JavaScript设计模式——责任链模式
- 责任链模式
- 深入浅出责任链模式
- 责任链模式
- 责任链模式
- 深入浅出责任链模式
- 责任链模式(一)
- 责任链模式(二)
- 责任链模式(三)
- 责任链模式
- java责任链模式
- 责任链模式
- 责任链模式
- 责任链模式
- 责任链模式
- day03 创建自定义控件
- 深入理解Java:SimpleDateFormat安全的时间格式化
- 优化 SQL SELECT 语句性能的 6 个简单技巧
- JSP 连接数据库
- JDBC连接数据库小示例
- Javascript 责任链模式
- [随记]跨域访问时,结果如果是html,可结合iframe使用
- java--JSTL(1)
- Spring容器的控制反转(IOC)和依赖注入(DI)
- objc_msgSend()报错Too many arguments to function call ,expected 0,have2的解决办法
- 从标题和内文入手,如何写一篇优质微信爆款文
- 【CODEVS】5036 寻找最大质因数(数据加强版)
- Spring-bean作用域scope详解
- linux_ok6410 ttyUSB0 (GPS)USB转串口总线调试(含代码)