javascript设计模式16中介者

中介者模式主要用来解耦对象与对象之间的耦合关系。
当系统中有大量的对象互相调用时候,容易形成网状多对多的层次关系,一旦某个对象状态发生改变,要同时修改与其有交互关系的其他对象,这必然是难以维护的。对象的复用性也差了许多。
通过引入中介者对象,来维护各个对象之间的关系,把网状多对多关系变为中介对象和其他所有对象的一对多关系,从而解耦对象与对象之间的复杂引用关系。
中介者模式是迎合 迪米特法则的 一种实现。 迪米特法则也叫最小知识原则。 指对象应该尽可能少的了解其他对象,只关注自身功能的实现。

缺点:虽然对象与对象之间的耦合被解除了,但是中介者对象内,却维护了它们之间的关系。随着关联对象越来越多,中介者对象也会变大,对其自身都往往难以维护。
在实际开发中,也不能不假思索或者一味的去使用中介者模式,因为一般来说,某些对象的关联是有其必要性的,(模块或对象之间有一些依赖性是很正常的)对于代码理解和调用上都更加清晰,如果对象不是很多,调用层次不是很复杂的情况下,
一般不使用中介者模式。 避免堆砌模式和过度设计。

如果对象之间的复杂耦合导致调用和维护出现了困难,而且这些耦合度随项目的变化呈指数增长曲线,那么我们就可以考虑使用中介者模式来重构代码。

 

var meditor = function(){
	this.obj = obj;
}

meditor.prototype.change = function(obj){
	if(obj == obj1){
		console.log('do something')
			if(obj.state){
		console.log('obj2 do something')
	}
	}else if(obj == obj2){
		console.log('do something')
			if(obj.state){
		console.log('obj1 do something')
	}
	}


}

var obj1 = function(name){
	this.name = name;
	this.state = null;
}

var obj2 = function(name){
	this.name = name;
	this.state = null;
}

var obj1 = new obj1('obj1')
var obj2 = new obj2('obj2')

var meditor = new meditor()
meditor.change(obj1)
meditor.change(obj2)

  

posted @ 2016-02-23 21:55  倾其一生  阅读(110)  评论(0)    收藏  举报