js工厂模式

本文介绍了工厂模式的概念及其在软件开发中的应用。包括工厂模式的基本定义、简单工厂模式与抽象工厂模式的区别,以及工厂模式如何帮助解决对象创建过程中的复杂性和依赖问题。

工厂模式定义一个用于创建对象的借口,这个借口由子类决定类实例化那一个类。该模式使一个类的实例化延迟到了子类。而子类可以重写接口方法以便创建的时候制定自己的对象类型(抽象工厂)。这个模式十分有用,尤其是创建对象的流程赋值的时候,比如依赖于很多设置文件等。并且,你会经常在程序里看到工厂方法,用于让子类类定义需要创建的对象类型。

var gongchang={};
gongchang.chanyifu=function(arg){
this.gongren=50;
alert("我们有"+this.gongren);
}
gongchang.chanxie=function(){
alert('产鞋子');
}

gongchang.yushu=function(){
alert('运输');
}
gongchang.changzhang=function(para){
return gongchang[para]();
}
var me=gongchang.changzhang('chanyifu');
alert(me.gongren);

工厂模式作用:
1.对象的构建十分复杂。
2.需要依赖具体的环境创建不同实例。
3.处理大量具有相同属性的小对象。
注意事项:不能滥用工厂,有时候仅仅是给代码增加复杂度。

简单工厂模式:只有一个抽象产品类

var XMLHttpFactory=function(){};
XMLHttpFactory.createXMLHttp=function(){
var XMLHttp=null;
if(window.XMLHttpRequest){
XMLHttp=new XMLHttpRequest();
}else if(window.ActiveXObject){
XMLHttp=new ActiveXObject('Microsoft.XMLHttp')
}
return XMLHttp;
}

var AjaxHander=function(){
var xml=XMLHttpFactory.createXMLHttp();
}

抽象工厂模式:有多个抽象产品类

var XMLHttpFactory=function(){};
XMLHttpFactory.prototype={
createFactory:function(){
throw new Error('This is an abstract class');
}
}
var XMLHandler=function(){
XMLHttpFactory.call(this); //改变this的指向
}
XMLHandler.prototype=new XMLHttpFactory();
XMLHandler.prototype.constructor=XMLHandler
XMLHandler.prototype.createFactory=function(){
var XMLHttp=null;
if(window.XMLHttpRequest){
XMLHttp=new XMLHttpRequest();
}else if(window.ActiveXObject){
XMLHttp=new ActiveXObject('Microsoft.XMLHttp')
}
return XMLHttp;
}

转载于:https://www.cnblogs.com/sungangmo/p/6566864.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值