用JavaScript实现的设计模式之commandline(命令行)模式
使用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(命令行)模式相关推荐
- 设计模式学习笔记——命令(Command)模式
设计模式学习笔记--命令(Command)模式 @(设计模式)[设计模式, 命令模式, command] 设计模式学习笔记命令Command模式 基本介绍 命令案例 类图 实现代码 Command接口 ...
- JavaScript 23 种设计模式之 4 抽象工厂模式
JavaScript 23 种设计模式之 4 抽象工厂模式 概念与特点 结构与实现 应用场景 应用实例 总结 概念与特点 概念: 提供一组相关或相互依赖对象的接口.抽象工厂模式是工厂方法模式的升级版, ...
- (转)php-cli模式学习(PHP命令行模式)
php-cli模式学习(PHP命令行模式) 之前知道php-cli模式是一种类似shell命令式的执行php程序,不过一直以为这个是一种落后的方式,应该没有什么意义,因为从没有遇到过使用这个cli模式 ...
- cgi php脚本运行超时间,php超时 - php-cgi调用外部程序超时,但php在命令行模式下能完整运行外部程序...
运行环境为Ubuntu14.04 php脚本 无论用Apache还是nginx都会在R语言运行一半时终止运行(在需要等待运行3~5秒时的步骤停止) 但用php在命令行模式 php -f result. ...
- php mysql 命令行模式_MySQL_MYSQL导入导出sql文件简析,一.MYSQL的命令行模式的设置- phpStudy...
MYSQL导入导出sql文件简析 一.MYSQL的命令行模式的设置 桌面->我的电脑->属性->环境变量->新建-> PATH=":path\mysql\bin ...
- PHP 命令行模式实战之cli+mysql 模拟队列批量发送邮件(在Linux环境下PHP 异步执行脚本发送事件通知消息实际案例)...
源码地址:https://github.com/Tinywan/PHP_Experience 测试环境配置: 环境:Windows 7系统 .PHP7.0.Apache服务器 PHP框架:ThinkP ...
- PHP 的命令行模式
被安全模式限制或屏蔽的函数Built-in web server 特点 在线手册:中文 英文PHP手册 PHP 的命令行模式 Table of Contents Built-in web server ...
- 如何在Terminal命令行模式下运行Objective-C
一般Objective-C的代码都在Xcode中调试,今天实验了下如何在命令行模式下运行,还是比较简单的,记录分享一下. File: xxd.h #include <Foundation/Fou ...
- 13分页和shell命令行模式
技术交流QQ群:1027579432,欢迎你的加入! 本教程来源于B站杨仕航Django2.0开发视频教程,如需转载,必须注明来源! 1.为什么先讲分页功能 2.快速添加新的博客 shell命令行模式 ...
最新文章
- More than one file was found with OS independent path 'META-INF/rxjava.properties
- Ubuntu 改变workspace布局
- xml python2.6_如何使用前缀选项解析python 2.6中的参数为-f file.xml
- Python基础教程:自定义迭代器
- 基于DeepConvLSTM的传感器信号分类
- wenstorm设置谷歌_WebStorm+Chrome调试Vue步骤
- 300张小抄表搞定机器学习知识点:学习根本停不下来!
- 如何在Android中使用OpenCV
- 通过ResNet-50进行面部表情识别(易懂)
- Eclipse使用问题
- Win 10 任务栏中Google开启时出现两个Google图标
- 2015年1月9日XX大学XX学院考试题
- 高老师的架构设计_隽语集(DD_2101)
- JavaSE基础知识汇总
- excel单元格设置自动换行后导出显示不全原因
- Ubuntu16.04下caffe CPU版的详细安装步骤
- 共振峰估计实验MATLAB
- ffmpeg每隔1秒抽取视频的1帧画面
- where current of语句
- InterSystems IRIS 和 IRIS for Health 2021.2 预览版发布
热门文章
- SQL高级---SQL UNION 和 UNION ALL 操作符
- 集成云技术的Zoomla!逐浪CMS5.0研发全面启动
- 使用Samba服务器构建私有和公共共享目录
- angular中的e2e检测sendkeys将绑定值设置为空
- [2018/11/13]图像处理
- Cocos2d-x:使用九宫格(九切片)自定义缩放资源
- Linux与Windows中的UTC时间
- 自用Excel VBA技巧整理
- 学习小技巧---javascript中获取服务器端控件生成的页面ID
- -XX:+UseParallelGC与 -XX:+UseParNewGC相关介绍