美文网首页
JS设计模式6 - The Facade Pattern

JS设计模式6 - The Facade Pattern

作者: 转角遇见一直熊 | 来源:发表于2017-03-17 18:05 被阅读24次

    外观模式

    外观模式.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

          本文链接:https://www.haomeiwen.com/subject/tgtynttx.html