设计模式之5职责连模式
2018-06-03 本文已影响0人
钱学敏
定义
使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系,将这些关系连成一条链,并沿着这条链传递该请求,直到一个对象处理它为止。现实生活中比如我们坐公交车的人太多,我们把1块钱交给售票员,让前面的人往前递直到售票员收到结束。我们是这个事件的发起者,中间传递的人有职责帮我们把1块钱传给售票员,但这1块钱不属于他们。
1、一定要有发起者
2、每一个中间人都要next往下传递,不能停
3、最后一个人一定要结束这件事
应用场景
将大的方法拆分,通过next串联起来
module.exports=function(){
router.get('/:id.html',doSomething);
}
//将上面的方法拆分为三个 拆分业务逻辑 让代码更清晰
module.exports=function(){
router.get('/:id.html',step1,step2,end);
}
//step1与step2一样 通过next向后传递
step1:function(req,res,next){
safeRequest({
url:'',
success:function(data){
req.data.index=data;
return next();
},
error:function(){
res.render('index/index.tpl',{})
}
})
}
end:function(req,res,next){
var result=req.data.index;
res.render(result)
}