使用Commandline设计模式之前的源代码:

<html>
<script>// Priority: ActiveX > HTML5 > Flash > Form(default)
function isActiveXSupported(){//...return false;
}function isHTML5Supported(){//...return false;
}function isFlashSupported(){//...return false;
}var uploadAPI;
if ( isActiveXSupported()) {// lots of initialization workuploadAPI = { "name": "ActiveX"};
}
else if( isHTML5Supported()) {// lots of initialization workuploadAPI = { "name": "HTML5"};
}
else if( isFlashSupported()) {// lots of initialization workuploadAPI = { "name": "Flash"};
}
else {// lots of initialization workuploadAPI = { "name": "Form"};
}console.log(uploadAPI);</script>
</html>

我们可以使用CommandLine设计模式,将这些冗长的IF-ELSE语句消除:

commandline命令行模式的JavaScript实现版本:

<html>
<script>Function.prototype.after = function( func ){var _self = this;return function() {var ret = _self.apply( this, arguments );if ( ret  ) {return ret;}return func.apply( this, arguments);}
}// Priority: ActiveX > HTML5 > Flash > Form(default)
var getActiveX = function() {try {// lots of initialization worka();return { "name": "ActiveX"};}catch (e) {// user broswer does not support ActiveXreturn null;}
}var getHTML5 = function() {try {// lots of initialization workreturn { "name": "HTML5"};}catch (e) {// user broswer does not support HTML5return null;}
}var getFlash = function() {try {// lots of initialization workreturn { "name": "Flash"};}catch (e) {// user broswer does not support Flashreturn null;}
}var getForm = function() {return { "name": "Form"};
}var uploadAPI = getActiveX.after(getHTML5).after(getFlash).after(getForm)();console.log(uploadAPI);</script>
</html>

用JavaScript实现的设计模式之commandline(命令行)模式相关推荐

  1. 设计模式学习笔记——命令(Command)模式

    设计模式学习笔记--命令(Command)模式 @(设计模式)[设计模式, 命令模式, command] 设计模式学习笔记命令Command模式 基本介绍 命令案例 类图 实现代码 Command接口 ...

  2. JavaScript 23 种设计模式之 4 抽象工厂模式

    JavaScript 23 种设计模式之 4 抽象工厂模式 概念与特点 结构与实现 应用场景 应用实例 总结 概念与特点 概念: 提供一组相关或相互依赖对象的接口.抽象工厂模式是工厂方法模式的升级版, ...

  3. (转)php-cli模式学习(PHP命令行模式)

    php-cli模式学习(PHP命令行模式) 之前知道php-cli模式是一种类似shell命令式的执行php程序,不过一直以为这个是一种落后的方式,应该没有什么意义,因为从没有遇到过使用这个cli模式 ...

  4. cgi php脚本运行超时间,php超时 - php-cgi调用外部程序超时,但php在命令行模式下能完整运行外部程序...

    运行环境为Ubuntu14.04 php脚本 无论用Apache还是nginx都会在R语言运行一半时终止运行(在需要等待运行3~5秒时的步骤停止) 但用php在命令行模式 php -f result. ...

  5. php mysql 命令行模式_MySQL_MYSQL导入导出sql文件简析,一.MYSQL的命令行模式的设置- phpStudy...

    MYSQL导入导出sql文件简析 一.MYSQL的命令行模式的设置 桌面->我的电脑->属性->环境变量->新建-> PATH=":path\mysql\bin ...

  6. PHP 命令行模式实战之cli+mysql 模拟队列批量发送邮件(在Linux环境下PHP 异步执行脚本发送事件通知消息实际案例)...

    源码地址:https://github.com/Tinywan/PHP_Experience 测试环境配置: 环境:Windows 7系统 .PHP7.0.Apache服务器 PHP框架:ThinkP ...

  7. PHP 的命令行模式

    被安全模式限制或屏蔽的函数Built-in web server 特点 在线手册:中文 英文PHP手册 PHP 的命令行模式 Table of Contents Built-in web server ...

  8. 如何在Terminal命令行模式下运行Objective-C

    一般Objective-C的代码都在Xcode中调试,今天实验了下如何在命令行模式下运行,还是比较简单的,记录分享一下. File: xxd.h #include <Foundation/Fou ...

  9. 13分页和shell命令行模式

    技术交流QQ群:1027579432,欢迎你的加入! 本教程来源于B站杨仕航Django2.0开发视频教程,如需转载,必须注明来源! 1.为什么先讲分页功能 2.快速添加新的博客 shell命令行模式 ...

最新文章

  1. More than one file was found with OS independent path 'META-INF/rxjava.properties
  2. Ubuntu 改变workspace布局
  3. xml python2.6_如何使用前缀选项解析python 2.6中的参数为-f file.xml
  4. Python基础教程:自定义迭代器
  5. 基于DeepConvLSTM的传感器信号分类
  6. wenstorm设置谷歌_WebStorm+Chrome调试Vue步骤
  7. 300张小抄表搞定机器学习知识点:学习根本停不下来!
  8. 如何在Android中使用OpenCV
  9. 通过ResNet-50进行面部表情识别(易懂)
  10. Eclipse使用问题
  11. Win 10 任务栏中Google开启时出现两个Google图标
  12. 2015年1月9日XX大学XX学院考试题
  13. 高老师的架构设计_隽语集(DD_2101)
  14. JavaSE基础知识汇总
  15. excel单元格设置自动换行后导出显示不全原因
  16. Ubuntu16.04下caffe CPU版的详细安装步骤
  17. 共振峰估计实验MATLAB
  18. ffmpeg每隔1秒抽取视频的1帧画面
  19. where current of语句
  20. InterSystems IRIS 和 IRIS for Health 2021.2 预览版发布

热门文章

  1. SQL高级---SQL UNION 和 UNION ALL 操作符
  2. 集成云技术的Zoomla!逐浪CMS5.0研发全面启动
  3. 使用Samba服务器构建私有和公共共享目录
  4. angular中的e2e检测sendkeys将绑定值设置为空
  5. [2018/11/13]图像处理
  6. Cocos2d-x:使用九宫格(九切片)自定义缩放资源
  7. Linux与Windows中的UTC时间
  8. 自用Excel VBA技巧整理
  9. 学习小技巧---javascript中获取服务器端控件生成的页面ID
  10. -XX:+UseParallelGC与 -XX:+UseParNewGC相关介绍