设计模式之职责链模式

职责链模式

责任链模式是一种设计模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。

模式作用:

  1. dom的冒泡有些类似职责链
  2. nodejs当controller有很多负责操作逻辑的时候拆分中间件
  3. 解耦发送者和接收者

注意事项:

  1. JavaScript中的每一次【.】是有代价的,在有必要的时候应用

例子:

别人给老板一个需求,提供一个php程序,老板把需求委托给项目经理,项目经理把需求委托给程序员

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//老板
function laoban(xiangmujingli) {
if(xiangmujingli){
this.xiangmujingli=xiangmujingli;
}
}
laoban.prototype.write=function(todo){
this.xiangmujingli.write(todo)
}
//项目经理
function xiangmujingli(coder){
if(coder){
this.coder=coder;
}
}
xiangmujingli.prototype.write=function(todo){
this.coder.write(todo);
}
// 程序员
function coder(todo){}
coder.prototype.write=function(todo){
console.log("coding..."+todo);
}
//begin发起coder来结束
var begin=new laoban(new xiangmujingli(new coder()))
begin.write("php")