外观模式
外观模式.png目的
为复杂系统提供统一的接口
何时使用
- 需要一个简单的接口屏蔽复杂系统
- 系统实现之间有很多依赖
- 系统和子系统需要分层
举例
web服务器的service是一个典型的外观模式,在服务器内部可能有复杂的业务逻辑,也可能有很多数据库操作,但是客户端在访问服务器的时候只需要功能性的接口。
代码
var module = (function() {
var _private = {
i: 5,
get: function() {
console.log( "current value:" + this.i);
},
set: function( val ) {
this.i = val;
},
run: function() {
console.log( "running" );
},
jump: function(){
console.log( "jumping" );
}
};
return {
facade: function( args ) {
_private.set(args.val);
_private.get();
if ( args.run ) {
_private.run();
}
}
};
}());
// Outputs: "current value: 10" and "running"
module.facade( {run: true, val: 10} );
上面facade
的接口屏蔽了很多内部接口。
结论
facade模式一个不好的地方是会影响性能。可以对比一下document.getElementById('foo');
和$('#foo');
的效率
http://jsperf.com/getelementbyid-vs-jquery-id
网友评论