用JavaScript实现的设计模式之commandline(命令行)模式
程序员文章站
2024-01-07 21:19:10
...
使用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 work
uploadAPI = { "name": "ActiveX"};
}
else if( isHTML5Supported()) {
// lots of initialization work
uploadAPI = { "name": "HTML5"};
}
else if( isFlashSupported()) {
// lots of initialization work
uploadAPI = { "name": "Flash"};
}
else {
// lots of initialization work
uploadAPI = { "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 work
a();
return { "name": "ActiveX"};
}
catch (e) {
// user broswer does not support ActiveX
return null;
}
}
var getHTML5 = function() {
try {
// lots of initialization work
return { "name": "HTML5"};
}
catch (e) {
// user broswer does not support HTML5
return null;
}
}
var getFlash = function() {
try {
// lots of initialization work
return { "name": "Flash"};
}
catch (e) {
// user broswer does not support Flash
return null;
}
}
var getForm = function() {
return { "name": "Form"};
}
var uploadAPI = getActiveX.after(getHTML5).after(getFlash).after(getForm)();
console.log(uploadAPI);
</script>
</html>
推荐阅读
-
用JavaScript实现的设计模式之commandline(命令行)模式
-
js如何实现设计模式中的模板方法_javascript技巧
-
详解JavaScript实现设计模式中的适配器模式的方法
-
javascript设计模式之Adapter模式【适配器模式】实现方法示例
-
javascript设计模式之Adapter模式【适配器模式】实现方法示例
-
c#设计模式之单例模式的实现方式
-
JavaScript设计模式之观察者模式(发布订阅模式)原理与实现方法示例
-
详解JavaScript实现设计模式中的适配器模式的方法
-
JS设计模式之观察者模式实现实时改变页面中金额数的方法
-
Java设计模式之单例模式的设计思路与具体实现