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

 更新时间:2010年04月27日 14:24:33   作者:  
接口的实现,从而使不同子类可以被同等的对待,恰当的使用工厂模式,但不要拘泥与形式,理解本质。
模式类型:工厂模式

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

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

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

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

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

一般使用形式:

作为独立的选择器存在:

复制代码 代码如下:

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={};

相关文章

  • JObj预览一个JS的框架

    JObj预览一个JS的框架

    我说过,我要写一个JS的框架,我知道有人会从心底BS我,但是:你继续BS吧!我还是要写我的JOBJ。
    2008-03-03
  • CLASS_CONFUSION JS混淆 全源码

    CLASS_CONFUSION JS混淆 全源码

    这里通过JS字符串替换、随机数运算实现混淆JS代码,达到降低代码可读性,以保护代码的目的,需要的朋友可以参考一下
    2007-12-12
  • Javascript面向对象之四 继承

    Javascript面向对象之四 继承

    继承是面向对象中比不可少的特性,但javascript中并没有继承的概念机制,但我们可以自己来实现这种功能。
    2011-02-02
  • js类后台管理菜单类-MenuSwitch

    js类后台管理菜单类-MenuSwitch

    js类后台管理菜单类-MenuSwitch...
    2007-09-09
  • JavaScript 面向对象编程(1) 基础

    JavaScript 面向对象编程(1) 基础

    自从有了Ajax这个概念,JavaScript作为Ajax的利器,其作用一路飙升。JavaScript最基本的使用,以及语法、浏览器对象等等东东在这里就不累赘了。把主要篇幅放在如何实现JavaScript的面向对象编程方面。
    2010-05-05
  • javascript 写类方式之三

    javascript 写类方式之三

    用构造函数来定义类属性(字段) 用原型方式来定义类的方法。 就有了第三种方式。这种方式貌似采用的人较多。
    2009-07-07
  • Javascript面向对象设计一 工厂模式

    Javascript面向对象设计一 工厂模式

    工厂模式抽象了创建具体对象的过程,但是在ECMAScript中无法创建类,所以就使用一种函数来封装以特定接口创建对象的细节
    2011-12-12
  • JavaScript面向对象程序设计三 原型模式(上)

    JavaScript面向对象程序设计三 原型模式(上)

    在javaScript面向对象设计一和Javascript面向对象设计二中分别介绍了工厂模式和构造函数模式,以及他们格式的优缺点,今天继续讲解原型模式
    2011-12-12
  • JavaScript面向对象(极简主义法minimalist approach)

    JavaScript面向对象(极简主义法minimalist approach)

    荷兰程序员 Gabor de Mooij 提出了一种比 Object.create ()更好的新方法,他称这种方法为极简主义法(minimalist approach)。这也是我推荐的方法
    2012-07-07
  • JavaScript 构造函数 面相对象学习必备知识

    JavaScript 构造函数 面相对象学习必备知识

    关于JavaScript构造函数,如今出现了很多JavaScript的框架,例如jQuery、Ext等等这些,这些将JavaScript作为一种面向对象的语言进行编程,那么JavaScript到底是怎么样实现面向对象的一些特征的呢,首先,我们来看看JavaScript怎么样来定义一个构造函数。
    2010-06-06

最新评论