您的位置:首页 > Web前端 > JavaScript

javaScript设计模式探究【4】--工厂模式

2013-04-12 13:28 99 查看
前一段时间由于清明节,女朋友来中国,所以陪人家玩了几天,就没看书,有些荒废了,这几天补上吧.接下来我们会讨论一下javascript设计模式之工程模式,这篇之后,可能对于javascript设计模式的探究会告一段落,接下来还是再多学一下javascript的一些基础知识,再巩固一下.prototype(原型链),function,作用域链,javascript操作dom,bom,变量对象,this.ajax等等,还可能看看html5,css,既然选择了走web前端这条路,那就坚持吧,是金子总会发光的.好了,回到正题:工厂模式

工厂模式适用场合:

1.动态实现--需要创建一些用不同方式实现同一接口的对象

2.节省设置开销--对象需要进行复杂并且彼此相关的设置

3.小型对象组成一个大对象--创建封装许多较小对象的对象.

实例:

还是看例子说话吧,个人觉得工厂模式就是switch(很肤浅),就是将一些不同方式实现同一接口的方法封装成一个对象.

View Code

/* XhrManager singleton */
var XhrManager = {
createXhrHandler:function(){
var xhr;
if(this.isOffline()){
xhr = new OfflineHandler();
}
else if(this.isHighLatency()){
xhr = new QueuedHanler();
}
else{
xhr = new SimpleHandler();
}
Interface.ensureImplements(xhr,AjaxHandler);
return xhr;
},
isOffline:function(){

},
isHighLatency:function(){

}
};

var myHandler = XhrManager.createXhrHandler();
var callback = {
success:function(responseText){alert('Success:'+responseText);},
failure:function(stateCode){alert('Failure:'+statusCode);}
};
myHandler.request('GET','script.php',callback);


使用工厂模式的主要好处在于消除对象间的耦合,通过使用工厂方法而不是new关键字及其具体类,你可以把所有实例化代码集中在一个位置,这可以大大简化更换所用的类或在运行期间动态选择所用的类的工作,在派生子类时它也提供了更大的灵活性。使用工厂模式,你可以先创建一个抽象的父类,然后再子类中创建工厂方法,从而把成员对象的实例化推迟到更专门化的子类中进行。

工厂模式虽然好,但是也不能滥用。

写的很简单,就不发表了。。接下来还是先看看基础的javascript语法方面的知识,巩固一下吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: