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 相关文章推荐
prototype class详解
Sep 07 Javascript
JavaScript 变量命名规则
Sep 23 Javascript
js 与或运算符 || && 妙用
Dec 09 Javascript
jquery和css3实现的炫酷时尚的菜单导航
Sep 01 Javascript
jQuery中each()方法用法实例
Dec 27 Javascript
JavaScript实现16进制颜色值转RGB的方法
Feb 09 Javascript
javascript获得当前的信息的一些常用命令
Feb 25 Javascript
axios对请求各种异常情况处理的封装方法
Sep 25 Javascript
简单的React SSR服务器渲染实现
Dec 11 Javascript
vue 移动端注入骨架屏的配置方法
Jun 25 Javascript
基于javascript处理二进制图片流过程详解
Jun 08 Javascript
OpenLayers3实现鼠标移动显示坐标
Sep 25 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
php 生成唯一id的几种解决方法
2013/03/08 PHP
解析PHP中的file_get_contents获取远程页面乱码的问题
2013/06/25 PHP
PHP对象递归引用造成内存泄漏分析
2014/08/28 PHP
php实现用户注册密码的crypt加密
2017/06/08 PHP
利用laravel搭建一个迷你博客实战教程
2017/08/13 PHP
php多进程模拟并发事务产生的问题小结
2018/12/07 PHP
数组方法解决JS字符串连接性能问题有争议
2011/01/12 Javascript
JS中获取数据库中的值的方法
2013/07/14 Javascript
使用jquery的ajax需要注意的地方dataType的设置
2013/08/12 Javascript
JS+CSS实现自动改变切换方向图片幻灯切换效果的方法
2015/03/02 Javascript
基于javascript实现九九乘法表
2016/03/27 Javascript
基于JQuery的$.ajax方法进行异步请求导致页面闪烁的解决办法
2016/05/10 Javascript
JSP基于Bootstrap分页显示实例解析
2016/06/12 Javascript
JS中SetTimeout和SetInterval使用初探
2017/03/23 Javascript
JS将unicode码转中文方法
2017/05/08 Javascript
bootstrap基本配置_动力节点Java学院整理
2017/07/14 Javascript
浅谈Vue响应式(数组变异方法)
2018/05/07 Javascript
JointJS JavaScript流程图绘制框架解析
2019/08/15 Javascript
vue 解除鼠标的监听事件的方法
2019/11/13 Javascript
[37:50]VP vs TNC Supermajor小组赛B组 BO3 第一场 6.2
2018/06/03 DOTA
Python字符串中查找子串小技巧
2015/04/10 Python
Python中使用partial改变方法默认参数实例
2015/04/28 Python
python中requests和https使用简单示例
2018/01/18 Python
cmd运行python文件时对结果进行保存的方法
2018/05/16 Python
Django跨域请求问题的解决方法示例
2018/06/16 Python
win10下python3.5.2和tensorflow安装环境搭建教程
2018/09/19 Python
django小技巧之html模板中调用对象属性或对象的方法
2018/11/30 Python
Python OpenCV对本地视频文件进行分帧保存的实例
2019/01/08 Python
Python实现的爬取小说爬虫功能示例
2019/03/30 Python
python+selenium实现自动化百度搜索关键词
2019/06/03 Python
美国时尚假发购物网站:Wigsbuy
2019/04/06 全球购物
荷兰DOD药房中文官网:DeOnlineDrogist
2020/12/27 全球购物
活动志愿者自荐信
2014/01/27 职场文书
2014年留守儿童工作总结
2014/12/10 职场文书
给老婆的保证书
2015/01/16 职场文书
SpringBoot 集成短信和邮件 以阿里云短信服务为例
2022/04/22 Java/Android