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 相关文章推荐
JavaScript高级程序设计(第3版)学习笔记5 js语句
Oct 11 Javascript
深入分析JSON编码格式提交表单数据
Jun 25 Javascript
jQuery中判断对象是否存在的方法汇总
Feb 24 Javascript
如何用JS判断两个数字的大小
Jul 21 Javascript
js创建对象几种方式的优缺点对比
Sep 28 Javascript
Vue.JS入门教程之事件监听
Dec 01 Javascript
AngularJS 使用ng-repeat报错 [ngRepeat:dupes]
Jan 19 Javascript
Vue 实用分页paging实例代码
Apr 12 Javascript
Bootstrap table使用方法总结
May 10 Javascript
学习使用Bootstrap栅格系统
May 11 Javascript
Makefile/cmake/node-gyp中区分判断不同平台的方法
Dec 18 Javascript
layui 监听select选择 获取当前select的ID名称方法
Sep 24 Javascript
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
DIY实用性框形天线
2021/03/02 无线电
js+php实现静态页面实时调用用户登陆状态的方法
2015/01/04 PHP
Yii中CArrayDataProvider和CActiveDataProvider区别实例分析
2016/03/02 PHP
PHP函数rtrim()使用中的怪异现象分析
2017/02/24 PHP
Laravel中批量赋值Mass-Assignment的真正含义详解
2017/09/29 PHP
初探jquery——表单应用范例
2007/02/20 Javascript
Javascript 继承实现例子
2009/08/12 Javascript
ExtJS[Desktop]实现图标换行示例代码
2013/11/17 Javascript
jQuery实现TAB风格的全国省份城市滑动切换效果代码
2015/08/24 Javascript
jQuery EasyUI 菜单与按钮之创建简单的菜单和链接按钮
2015/11/18 Javascript
复杂的javascript窗口分帧解析
2016/02/19 Javascript
常用原生JS兼容性写法汇总
2016/04/27 Javascript
纯JS实现表单验证实例
2016/12/24 Javascript
video.js使用改变ui过程
2017/03/05 Javascript
微信小程序选择图片和放大预览图片功能
2017/11/02 Javascript
微信小程序引用iconfont图标的方法
2018/10/22 Javascript
JavaScript基础之静态方法和实例方法分析
2018/12/26 Javascript
webpack中如何加载静态文件的方法步骤
2019/05/18 Javascript
Vue+Typescript中在Vue上挂载axios使用时报错问题
2019/08/07 Javascript
javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法
2020/05/14 Javascript
Python获取暗黑破坏神3战网前1000命位玩家的英雄技能统计
2016/07/04 Python
python 实现tar文件压缩解压的实例详解
2017/08/20 Python
Python基于回溯法子集树模板解决数字组合问题实例
2017/09/02 Python
Python动刷新抢12306火车票的代码(附源码)
2018/01/24 Python
Python 中的 global 标识对变量作用域的影响
2019/08/12 Python
使用 Python 写一个简易的抽奖程序
2019/12/08 Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
2020/12/31 Python
python正则表达式re.match()匹配多个字符方法的实现
2021/01/27 Python
美国零售商店:Blue&Cream
2017/04/07 全球购物
阿波罗盒子:Apollo Box
2017/08/14 全球购物
德国2018年度最佳在线药房:Bodfeld Apotheke
2019/11/04 全球购物
大学毕业生自荐书怎么写?
2014/01/06 职场文书
试用期转正员工自我评价
2014/09/18 职场文书
2014年人事行政工作总结
2014/12/03 职场文书
一次SQL如何查重及去重的实战记录
2022/03/13 MySQL
python实现学生信息管理系统(面向对象)
2022/06/05 Python