stay hungry stay foolish

Javascript设计模式(责任链模式)

在责任链模式中:发送者知道链中的第一个接受者;它向这个接受者发出请求,每一个接受者都对请求进行分析,要么处理它,要么往下传递;每一个接受者知道的其他对象只有一个,即它的下家对象;如果没有任何接受者处理请求,那么请求将从链上离开,不同的实现对此有不同的反应。

实例:

//任务发送者
var Assign = function(task){
	this.task = task ;
};
//任务接受者
var Reciever = function(name,cando){
	this.name = name;
	this.cando = cando;
}
Reciever.prototype = {
	constructor: Reciever,
	execute: function(assign){
		if(this.cando == assign.task){
			console.log(this.name+'负责'+assign.task);
		}else if(this.successor){
			this.successor.execute(assign);
		}
	},
	//设置责任链的配置函数
	setSuccessor:function(successor){
		this.successor = successor;
		return successor;
	}
}
var assign = new Assign('js');
var rec1 = new Reciever('员工1','java');
var rec2 = new Reciever('员工2','ui');
var rec3 = new Reciever('员工3','js');
var rec4 = new Reciever('员工4','c++');

rec1.setSuccessor(rec2).setSuccessor(rec3).setSuccessor(rec4);
rec1.execute(assign);