Fork me on GitHub

外观模式是为外部提供简单的接口一种方式,由于模块内部方法庞杂,不能一一对外公开,那么我们需要一个统一的和简单的对外方法(API)来调用这些内在的函数。这时候我们可以用到外观模式:

var module = (function(){
	var name = 'bobi';
	var _p = function() {//内部方法,不公开
		console.log('your name is' + name);
	}
	var _q = function() {//内部方法,不公开
		console.log('my name is' + name);
	}
	var _c = function(m) {//内部方法,不暴露
		name = m
	}

	return{
		f :	function(m) {//公开的方法
			_c(m);//调用私有方法
			 if(name == 'bobi') {
			 	_p()
			 }else{
			 	_q();
			 }
		}	
	} 
})();

在module中,所有的私有方法都不需要公开,我们只是暴露了一个f方法,作为桥接的接口,f里面会执行调用各个内部方法。我们不需要关系_q,_p的执行内容,只需要关心f这个公开的方法。在这里,f就是作为一个简单的api来访问这些方法的。

外观模式也有一些缺点:那就是层级访问带来的性能问题,也就是说本来可以一层执行的函数,现在需要第二层来实现,所以在考虑使用此方法的时候我们要考虑到这样做的好处和付出的代价是否合理。

posted on 2015-03-11 15:16  chen·yan  阅读(226)  评论(0编辑  收藏  举报