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 相关文章推荐
基于jQuery的输入框无值自动显示指定数据的实现代码
Jan 24 Javascript
了解jQuery技巧来提高你的代码(个人觉得那个jquery的手册很不错)
Feb 10 Javascript
Bootstrap每天必学之级联下拉菜单
Mar 27 Javascript
JavaScript 控制字体大小设置的方法
Nov 23 Javascript
jQueryUI 拖放排序遇到滚动条时有可能无法执行排序的小bug及解决方案
Dec 19 Javascript
详解Vue爬坑之vuex初识
Jun 14 Javascript
vue-router 路由基础的详解
Oct 17 Javascript
bootstrap treeview 树形菜单带复选框及级联选择功能
Jun 08 Javascript
JS打印彩色菱形的实例代码
Aug 15 Javascript
从零开始学习搭建React脚手架项目
Aug 23 Javascript
基于vue.js组件实现分页效果
Dec 29 Javascript
JavaScript实现飞舞的泡泡效果
Feb 07 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
外媒评选出10支2020年最受欢迎的Dota2战队
2021/03/05 DOTA
浅谈json_encode用法
2015/03/05 PHP
Symfony2之session与cookie用法小结
2016/03/18 PHP
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
2016/12/14 PHP
js使浏览器窗口最大化实现代码(适用于IE)
2013/08/07 Javascript
Javascript 拖拽雏形中的一些问题(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
同一个网页中实现多个JavaScript特效的方法
2015/02/02 Javascript
Jquery跨浏览器文本复制插件Zero Clipboard的使用方法
2016/02/28 Javascript
JavaScript从数组的indexOf()深入之Object的Property机制
2016/05/11 Javascript
Angular 2父子组件数据传递之@ViewChild获取子组件详解
2017/07/04 Javascript
Vue0.1的过滤代码如何添加到Vue2.0直接使用
2017/08/23 Javascript
js匿名函数使用&传参(实例)
2017/09/08 Javascript
解决html-jquery/js引用外部图片时遇到看不了或出现403的问题
2017/09/22 jQuery
Three.js加载外部模型的教程详解
2017/11/10 Javascript
vue-cli 3.0 版本与3.0以下版本在搭建项目时的区别详解
2018/12/11 Javascript
NodeJs操作MongoDB教程之分页功能以及常见问题
2019/04/09 NodeJs
微信小程序实现跳转的几种方式总结(推荐)
2019/04/24 Javascript
Nuxt.js实现一个SSR的前端博客的示例代码
2019/09/06 Javascript
jQuery与原生JavaScript选择HTML元素集合用法对比分析
2019/11/26 jQuery
js轮播图之旋转木马效果
2020/10/13 Javascript
[49:58]完美世界DOTA2联赛PWL S3 Magma vs DLG 第一场 12.18
2020/12/19 DOTA
Python简单实现查找一个字符串中最长不重复子串的方法
2018/03/26 Python
在Python中使用gRPC的方法示例
2018/08/08 Python
matplotlib 对坐标的控制,加图例注释的操作
2020/04/17 Python
Python 实现微信自动回复的方法
2020/09/11 Python
python 利用Pyinstaller打包Web项目
2020/10/23 Python
Opencv常见图像格式Data Type及代码实例
2020/11/02 Python
Zavvi荷兰:英国大型音像制品和图书游戏零售商
2018/03/22 全球购物
AssertionError 跟一下那个类是 “is – a”的关系
2012/02/21 面试题
企业口号大全
2014/06/12 职场文书
企业优秀团员事迹材料
2014/08/20 职场文书
有限责任公司股东合作协议书
2014/12/02 职场文书
2015年办公室工作总结范文
2015/03/31 职场文书
2015年高一班主任工作总结
2015/05/13 职场文书
新员工实习期个人工作总结
2015/10/15 职场文书
Go语言实现Snowflake雪花算法
2021/06/08 Golang