博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS设计模式四:外观模式
阅读量:6709 次
发布时间:2019-06-25

本文共 1133 字,大约阅读时间需要 3 分钟。

介绍

外观模式(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; } };

再来一个简单的例子,说白了就是用一个接口封装其它的接口:

var mobileEvent = {
// ... stop: function (e) {
e.preventDefault(); e.stopPropagation(); } // ... };

总结

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

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

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

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

参考:大话设计模式

转载于:https://www.cnblogs.com/FineDay/articles/6640853.html

你可能感兴趣的文章
关于考核与面谈
查看>>
项目案例分享四:DC升级后Sysvol停止复制,日志报13508
查看>>
职场思想分享001 | 有多种选择才叫有能力
查看>>
ASP.NET MVC 5 - 验证编辑方法(Edit method)和编辑视图(Edit view)
查看>>
3D圣诞树源码[强力推荐]
查看>>
25 个超棒的 WordPress 主题(2012)
查看>>
Concurrent use of embedded Ruby in Java (using JRuby)
查看>>
基础才是重中之重~.net中的显式事务与隐式事务
查看>>
转载 - 通过设置P3P头来实现跨域访问COOKIE
查看>>
使用泛型创建只读集合
查看>>
SQL Server 中如何判断表是否存在
查看>>
delphi日期格式显示及文件打开方式小结
查看>>
最近看的一些东东
查看>>
POJ 3281 Dining(最大流)
查看>>
SQL Server Management Studio 过期无法使用解决办法
查看>>
Eclipse配置详解(包括智能提示设置、智能提示插件修改,修改空格自动上屏、JDK配置、各种快捷键列表……)...
查看>>
【数据结构】数组和广义表
查看>>
css3中transform的用法
查看>>
为什么Domain controller上的time synchronization非常重要?
查看>>
[转]CDN(内容分发网络)技术原理
查看>>