JavaScript设计模式之外观模式实例


Posted in Javascript onOctober 10, 2014

外观模式(门面模式),是一种相对简单而又无处不在的模式。外观模式提供一个高层接口,这个接口使得客户端或子系统更加方便调用。

用一段再简单不过的代码来表示:

var getName = function(){

return ”svenzeng”

}

var getSex = function(){

return ‘man'

}

如果你需要分别调用getName和getSex函数. 那可以用一个更高层的接口getUserInfo来调用.

var getUserInfo = function(){

var info = a() + b();

return info;

}

答案是显而易见的,饭堂的炒菜师傅不会因为你预定了一份烧鸭和一份白菜就把这两样菜炒在一个锅里。他更愿意给你提供一个烧鸭饭套餐。同样在程序设计中,我们需要保证函数或者对象尽可能的处在一个合理粒度,毕竟不是每个人喜欢吃烧鸭的同时又刚好喜欢吃白菜。

外观模式还有一个好处是可以对用户隐藏真正的实现细节,用户只关心最高层的接口。比如在烧鸭饭套餐的故事中,你并不关心师傅是先做烧鸭还是先炒白菜,你也不关心那只鸭子是在哪里成长的。

最后写个我们都用过的外观模式例子:

var stopEvent = function( e ){   //同时阻止事件默认行为和冒泡

e.stopPropagation();

e.preventDefault();

}
Javascript 相关文章推荐
根据对象的某一属性进行排序的js代码(如:name,age)
Aug 10 Javascript
JS/FLASH实现复制代码到剪贴板(兼容所有浏览器)
May 27 Javascript
IE6 hack for js 集锦
Sep 23 Javascript
jquery跟随屏幕滚动效果的实现代码
Apr 13 Javascript
JavaScript简单实现弹出拖拽窗口(二)
Jun 17 Javascript
js中window.open的参数及注意注意事项
Jul 06 Javascript
KnockoutJS 3.X API 第四章之数据控制流with绑定
Oct 10 Javascript
基于Javascript实现文件实时加载进度的方法
Oct 12 Javascript
jQuery插件FusionCharts实现的MSBar2D图效果示例【附demo源码】
Mar 24 jQuery
vue检测对象和数组的变化分析
Jun 30 Javascript
vue中keep-alive、activated的探讨和使用详解
Jul 26 Javascript
Vue 组件注册全解析
Dec 17 Vue.js
JavaScript中的无阻塞加载性能优化方案
Oct 10 #Javascript
JavaScript设计模式之策略模式实例
Oct 10 #Javascript
JavaScript运行机制之事件循环(Event Loop)详解
Oct 10 #Javascript
Javascript 读取操作Sql中的Xml字段
Oct 09 #Javascript
Javascript验证用户输入URL地址是否为空及格式是否正确
Oct 09 #Javascript
使用js Math.random()函数生成n到m间的随机数字
Oct 09 #Javascript
分享一款基于jQuery的视频播放插件
Oct 09 #Javascript
You might like
2020最新CPU的性能排名
2020/04/02 数码科技
php设计模式 Factory(工厂模式)
2011/06/26 PHP
10个简化PHP开发的工具
2014/12/25 PHP
CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法
2015/06/17 PHP
PHP实现的浏览器检查类
2016/04/11 PHP
JQury slideToggle闪烁问题及解决办法
2011/07/05 Javascript
JS+flash实现chrome和ie浏览器下同时可以复制粘贴
2013/09/22 Javascript
使用jQuery解决IE与FireFox下createElement方法的差异
2013/11/14 Javascript
JavaScript页面模板库handlebars的简单用法
2015/03/02 Javascript
bootstrap-treeview自定义双击事件实现方法
2016/01/09 Javascript
详解XMLHttpRequest(二)响应属性、二进制数据、监测上传下载进度
2016/09/14 Javascript
BootstrapValidator实现注册校验和登录错误提示效果
2017/03/10 Javascript
Vue实现图片与文字混输效果
2019/12/04 Javascript
Vue.js 实现地址管理页面思路详解(地址添加、编辑、删除和设置默认地址)
2019/12/11 Javascript
不刷新网页就能链接新的js文件方法总结
2020/03/01 Javascript
Openlayers+EasyUI Tree动态实现图层控制
2020/09/28 Javascript
jquery插件实现轮播图效果
2020/10/19 jQuery
用webAPI实现图片放大镜效果
2020/11/23 Javascript
[00:15]TI9观赛名额抽取
2019/07/10 DOTA
[01:11]steam端dota2实名认证操作流程视频
2021/03/11 DOTA
python中split方法用法分析
2015/04/17 Python
解决python给列表里添加字典时被最后一个覆盖的问题
2019/01/21 Python
解析python实现Lasso回归
2019/09/11 Python
Django框架中间件定义与使用方法案例分析
2019/11/28 Python
实例讲解使用CSS实现多边框和透明边框的方法
2015/09/08 HTML / CSS
澳大利亚最受欢迎的美发用品目的地:AMR
2019/08/28 全球购物
经典导游欢迎词大全
2014/01/16 职场文书
在校大学生个人的自我评价
2014/02/13 职场文书
文明生主要事迹
2014/05/25 职场文书
学校四群教育实施方案
2014/06/12 职场文书
2014年党建工作总结
2014/11/11 职场文书
房地产公司工程部经理岗位职责
2015/04/09 职场文书
字典算法实现及操作 --python(实用)
2021/03/31 Python
JavaScript 对象创建的3种方法
2021/11/17 Javascript
【DOTA2】半决赛强强对话~ PSG LGD vs EHOME - DPC 2022 CN REGIONAL FINALS WINTER
2022/04/02 DOTA
pd.DataFrame中的几种索引变换的实现
2022/06/16 Python