JS设计模式之外观模式

原创 2016年05月31日 11:38:27

介绍

外观模式(Facade)为子系统中的一组接口提供了一个一致的对外接口(即为封装),这个高层接口使得这一子系统更加容易使用。

正文

外观模式不仅简化类中的接口,而且对接口与调用者也进行了解耦。外观模式经常被认为开发者必备,它可以将一些复杂操作封装起来,并创建一个简单的接口用于调用。

外观模式经常被用于JavaScript类库里,通过它封装一些接口用于兼容多浏览器,外观模式可以让我们间接调用子系统,从而避免因直接访问子系统而产生不必要的错误。

外观模式的优势是易于使用,而且本身也比较轻量级。但也有缺点 外观模式被开发者连续使用时会产生一定的性能问题,因为在每次调用时都要检测功能的可用性。

外观模式很简单,还是代码中学习,下面我们使用了外观模式通过检测浏览器特性的方式来创建一个跨浏览器的使用方法。

var addMyEvent = function (el, ev, fn) {
    if (el.addEventListener) {
        el.addEventListener(ev, fn, false);
    } else if (el.attachEvent) {
        el.attachEvent('on' + ev, fn);
    } else {
        el['on' + ev] = fn;
    }
}; 

总结

那么何时使用外观模式呢?一般来说会在三个阶段中使用:

首先,在设计初期,应该要有意识地将不同的两个层分离,比如经典的三层结构,在数据访问层和业务逻辑层、业务逻辑层和表示层之间建立外观Facade。

其次,在开发阶段,子系统往往因为不断的重构演化而变得越来越复杂,增加外观Facade可以提供一个简单的接口,减少他们之间的依赖。

第三,在维护一个遗留的大型系统时,可能这个系统已经很难维护了,这时候使用外观Facade也是非常合适的,为系系统开发一个外观Facade类,为设计粗糙和高度复杂的遗留代码提供比较清晰的接口,让新系统和Facade对象交互,Facade与遗留代码交互所有的复杂工作。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C#设计模式之外观

IronMan之外观模式   接着上篇观察者内容的“剧情”,没看过的朋友也没关系,篇幅之间有衔接的关系但是影响不大。 需求: 为"兵工厂"提供各种支持,生产了各式各样的"IronMan",因为...

《HeadFirst设计模式》书摘-单例/命令/适配器/外观

单例模式 定义 确保一个类只有一个实例,并提供全局访问点 要点 单例模式也提供访问这个实例的全局点在java中实现单例模式需要私有的构造器,一个静态方法和一个静态变量确定在性能...

JAVA设计模式:外观(Facade)

外观模式为子系统中的一组接口提供一个一致的界面。Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。        网上有许多安保系统应用外观模式的例子,在这里我举一个客服中心的...

Java设计模式(五)Facade(外观),Composite(组合),Decorator(油漆工)

结构模式(三) Facade(外观) 为子系统中的一组接口提供一个统一接口。Facade 模式定义了一个更高层的接口,使子系统更加容易使用。 使用场景 1.为一个复杂子系统提供一个...

设计模式 之 外观

外观模式(Facade)           为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用        咱们暑假学习,好多同学都选择自...

设计模式——适配器,桥接,外观

简书链接:http://www.jianshu.com/p/602407ed19a0前言本文主要以代码形式实现每一种设计模式,算是自己的一种复习和实践。相应的代码,也会放到github上。 本文的类...

设计模式-外观

1.迪米特法则:(最少知识原则)一个软件实体与另一个软件实体发生关系时,当前软件实体应当尽可能少的了解软件实体的内容,(不和陌生人说话)。设计初衷在于降低类之间的耦合 2. 3.外观模式(门面模式...

外观(Facade)设计模式

实在是不知道关于设计模式这个问题怎么总结,因为看书遇到了,使用外观设计模式的问题!这里就顺带着说些吧! 我就不明确定义了,这个模式在很多框架中都会使用 首先就是顾名思义,“外观” 假设我们有个收音...

编程常用设计模式详解--(中篇)(适配器、装饰、代理、外观、桥接、组合、享元)

6.适配器模式 适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。首先,我们...

外观设计模式

外观设计模式: 为子系统中的一组接口提供一个一致的界面,此模式定义一个高层接口,这个接口使得这个子系统更加容易使用。引入外观模式后,客户端只需要和外观接收交互,而不需要于子系统交互,从而降低客户端于...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JS设计模式之外观模式
举报原因:
原因补充:

(最多只允许输入30个字)