javascript 模式设计之工厂模式学习心得


Posted in Javascript onApril 27, 2010

模式类型:工厂模式

模式说明:常用模式之一,用来动态创建对象

适用范围:在运行期间需要在一系列可互换的子类中进行选择的类

注意事项:接口的实现,从而使不同子类可以被同等的对待,恰当的使用工厂模式,但不要拘泥与形式,理解本质。

关键点:以 函数/类/子类 构建的选择器

本质:函数作为选择器的使用

一般使用形式:

作为独立的选择器存在:

function FactoryMode(index){ 
switch(index){ 
case "index1" : 
return new Class1();break; 
case "index2": 
return new Class2();break; 
case "index3": 
return new Class3();break; 
default:return new ClassComm();break; 
} 
}

或作为类的一个方法存在:
var MainClass=function(){};//主类构造器 
MainClass.prototype={ 
FactoryMode:function(){}//子类选择器 
}

又或隐式选择,即不以使用者的主观选择而选择:
var xmlRequest=function(){ 
if(this.isOffOnline()){ 
xhr= new OfflineHandler(); 
}//如果此时网络不可用,创建可缓存AJAX对象 
else if(this.isHightLatency()){ 
xhr= new QueuedHandler(); 
}//如果网络延迟较大,创建队列形式AJAX对象 
else { 
xhr=new SimpleHandler(); 
}//如果网络正常,创建简单AJAX对象 
interface.ensureImplements(xhr,AjaxHandler); 
//检查对象是否实现了接口,从而确保以后的工作可以顺利进行 
return xhr; 
}

延伸:

工厂模式的本质就是选择器的应用,选择器不仅可作为对象的选择,还可作为函数的选择,类的选择,参数的选择

函数的选择,如:

var addEvent=(function(){ 
if(!-[0,]){ 
return function(elem,type,handler){ 
elem[type+handler.toString()]=handler; 
elem.attachEvent("on"+type,elem[type+handler.toString]); 
}}//if IE 
else { 
return function(elem,type,handler){ 
elem.addEventListener(type,handler,false); 
} 
} 
})();//避免多次判断

类的选择:
var suitableClass=function(){ 
if(match condition A) return Class1; 
else if(match condition B) return Class2; 
else return ClassComm; 
}

参数的选择:
function Country(country){ 
if(country=="China") 
this.config={};//设置基本参数1 
else if(contry=="America") 
this.config={};//设置参数2 
else if() 
.......//等等 
} 
Country.prototype={};
Javascript 相关文章推荐
JS通过分析userAgent属性来判断浏览器的类型及版本
Mar 28 Javascript
jquery取子节点及当前节点属性值的方法
Sep 09 Javascript
JavaScript charCodeAt方法入门实例(用于取得指定位置字符的Unicode编码)
Oct 17 Javascript
jquery动态改变div宽度和高度
Feb 09 Javascript
javascript实现画不相交的圆
Apr 07 Javascript
javascript正则表达式模糊匹配IP地址功能示例
Jan 06 Javascript
Bootstrap表格使用方法详解
Feb 17 Javascript
JS实现的四级密码强度检测功能示例
May 11 Javascript
详解如何用typescript开发koa2的二三事
Nov 13 Javascript
详解vue使用插槽分发内容slot的用法
Mar 28 Javascript
小程序最新获取用户昵称和头像的方法总结
Sep 23 Javascript
js验证密码强度解析
Mar 18 Javascript
defer属性导致引用JQuery的页面报“浏览器无法打开网站xxx,操作被中止”错误的解决方法
Apr 27 #Javascript
jQuery Lightbox 图片展示插件使用说明
Apr 25 #Javascript
jQuery 表格工具集
Apr 25 #Javascript
基于JQuery.timer插件实现一个计时器
Apr 25 #Javascript
jquery+ashx无刷新GridView数据显示插件(实现分页、排序、过滤功能)
Apr 25 #Javascript
一个简单的jQuery插件制作 学习过程及实例
Apr 25 #Javascript
Javascript中的相等与不等运算
Apr 25 #Javascript
You might like
使用sockets:从新闻组中获取文章(三)
2006/10/09 PHP
php switch语句多个值匹配同一代码块的实现
2014/03/03 PHP
Laravel实现定时任务的示例代码
2017/08/10 PHP
一个不错的应用,用于提交获取文章内容,不推荐用
2007/03/03 Javascript
修改jQuery.Autocomplete插件 支持中文输入法 避免TAB、ENTER键失效、导致表单提交
2009/10/11 Javascript
JS getStyle获取最终样式函数代码
2010/04/01 Javascript
jquery插件制作简单示例说明
2012/02/03 Javascript
jquery实现微博文字输入框 输入时显示输入字数 效果实现
2013/07/12 Javascript
JavaScript调用ajax获取文本文件内容实现代码
2014/03/28 Javascript
JavaScript调试工具汇总
2014/12/23 Javascript
JavaScript中return false的用法
2015/03/12 Javascript
js实现汉字排序的方法
2015/07/23 Javascript
javascript实现网站加入收藏功能
2015/12/16 Javascript
基于JQuery实现分隔条的功能
2016/06/17 Javascript
使用开源工具制作网页验证码的方法
2016/10/17 Javascript
jQuery实现选中行变色效果(实例讲解)
2017/07/06 jQuery
vue与bootstrap实现时间选择器的示例代码
2017/08/26 Javascript
详解使用mpvue开发github小程序总结
2018/07/25 Javascript
浅谈监听单选框radio改变事件(和layui中单选按钮改变事件)
2019/09/10 Javascript
Ant Design的可编辑Tree的实现操作
2020/10/31 Javascript
python实现的一个p2p文件传输实例
2014/06/04 Python
python和pygame实现简单俄罗斯方块游戏
2021/02/19 Python
关于sys.stdout和print的区别详解
2019/12/05 Python
TensorFlow2.X结合OpenCV 实现手势识别功能
2020/04/08 Python
Python识别验证码的实现示例
2020/09/30 Python
台湾菁英交友:结识黄金单身的台湾人
2018/01/22 全球购物
ColourPop美国官网:卡拉泡泡,洛杉矶彩妆品牌
2019/04/28 全球购物
微软马来西亚官方网站:Microsoft马来西亚
2019/11/22 全球购物
Kappa英国官方在线商店:服装和运动器材
2020/11/22 全球购物
什么是View State?
2013/01/27 面试题
2014年国庆标语
2014/06/30 职场文书
模具设计与制造专业求职信
2014/07/19 职场文书
班级出游活动计划书
2014/08/15 职场文书
防溺水主题班会教案
2015/08/12 职场文书
车辆挂靠协议书
2016/03/23 职场文书
Mysql外键约束的创建与删除的使用
2022/03/03 MySQL