最新消息:

解码jQuery系列:OOP与jQuery

javascript feifei 1822浏览

译者注:本系列文章由石川创作,李松峰翻译,w3ctech.com首发,图灵社区转载。

“OOP与jQuery”是“解码jQuery”系列中的一个子系列,主要讨论 jQuery 的内部构成及相关的OOP(Object Oriented Programming,面向对象编程)概念。

在这篇文章中,我们会讨论工厂设计模式,也是jQuery核心中使用的一种设计模式。

1.创建对象

“四人帮”的名著Design Patterns: Elements of Reusable Object-Oriented Software(《设计模式》,http://en.wikipedia.org/wiki/Design_Patterns )把设计模式分为三类:

创建模式:创建对象的各种方式;
结构模式:组合各种对象以实现新的功能;
行为模式:对象之间互操作的方式。

工厂模式属于创建模式,顾名思义,工厂就是创建对象的。

我们先来看一看创建对象的最常见模式。好,以下代码创建了一个包含几个方法的对象。

如果想通过taskManager创建一个新的任务对象,而且是基于不同的类型分别调用update和read方法,那可以这样做:

 

可是,如果有10种不同的任务,这样做就太麻烦了。因此,就产生了工厂方法模式。

2.工厂方法模式

为了简化创建对象的工作,可以在taskManager中创建一个工厂方法:

有了这个方法,就可以像下面这样创建对象了:

 

3.jQuery中的工厂方法

在jQuery的core.js中,就有一个类似的创建对象的工厂方法:

 

使用这种方法的原因很简单,jQuery不知道用户会传入什么样的选择符,或许是标签名,如$(‘p’);ID,如 $(‘#main’) ,或者类,如 $(‘.item’)。因此,这个方法适合创建类似但事先又不知其具体类型的对象。

这里有一篇文章,叫Essential JavaScript Design Patterns For Beginners, Volume 1(http://addyosmani.com/resources/essentialjsdesignpatterns/book/),讨论了什么时候该用工厂模式,什么时候不该用工厂模式。

转载请注明:飞飞的个人网站 » 解码jQuery系列:OOP与jQuery