JS设计模式6 - The Facade Pattern

外观模式

JS设计模式6 - The Facade Pattern_第1张图片
外观模式.png

目的

为复杂系统提供统一的接口

何时使用

  1. 需要一个简单的接口屏蔽复杂系统
  2. 系统实现之间有很多依赖
  3. 系统和子系统需要分层

举例

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

你可能感兴趣的:(JS设计模式6 - The Facade Pattern)