JS设计模式6 - The Facade Pattern

外观模式

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,309评论 19 139
  • 1 场景问题# 1.1 生活中的示例## 外观模式在现实生活中的示例很多,比如:组装电脑,通常会有两种方案。 一个...
    七寸知架构阅读 6,456评论 7 57
  • 设计模式汇总 一、基础知识 1. 设计模式概述 定义:设计模式(Design Pattern)是一套被反复使用、多...
    MinoyJet阅读 4,059评论 1 15
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,819评论 18 399
  • 突然间想写个虚幻的爱情故事。 而我所看重的却是其间事故的启示。那些不甚甜美的磕磕碰碰不开心事比起那些经不起风雨的甜...
    牧荣萌阅读 156评论 0 0

友情链接更多精彩内容