工厂模式
解读:
1、对象的构建十分复杂
2、需要依赖具体的环境创建不同的实例
3、处理大量具有相同属性的小对象
代码
1、工厂应该有厂长决定运输到底那条产品线
2、消费者决定具体生产那条产品线即消费者决定子类
var gongchang={
};
gongchang.changyifu=function(argument){
this.gongren=50;
alert('我们有'+this.gongren);
},
gongchang.chanxie=function(){
alert('产鞋子')
},
gongchang.yunshu=function(){
alert('运输')
}
gongchang.changzhang=function(para){
//构造函数模式和单利模式
return new gongchang[para]();
}
var me=gongchang.changzhang('chanyifu');
简单模式
这是一个简单工厂模式
varXMLHttpFactory=function(){};
XMLHttpFactory.createXMLHttp=function(){
var XMLHttp=null;
//XMLHttpFactory.creteXmlHttp()这个方法更具当前的环境情况范湖一个XHR对象
if(window.XMLHttpRequest){
XMLHttp=new XMLHttpRequest();
}else{
XMLHttp=new ActiveObject("Microsoft.XMLHTTP");
return XMLHttp;
}
var AjaxHander=function(){
var XmlHttp=XMLHttpFactiory.CreateXMLHttp();/*具体的操作*/
}
}
抽象模式
var XMLHttpFactory=function(){
};
XMLHttpFactory.prototype={
createFActory:function(){//如果真的要调用这个方法会抛出一个错误,它不能被实例化,只能用来派生子类
throw new Error("this is a abstract class");
}
}//派生子类
var XMLHander=function(){
XMLHttpFactory.call(this);
}
XMLHander.protptype=new XMLHttpFactory();
XMLHander.prtotype.constructor=XXMLHander;//重新定义createFactory方法
XMLHande.prototype.createFactory=function(){
var XMLHttp=null;
//XMLHttpFactory.creteXmlHttp()这个方法更具当前的环境情况范湖一个XHR对象
if(window.XMLHttpRequest){
XMLHttp=new XMLHttpRequest();
}else{
XMLHttp=new ActiveObject("Microsoft.XMLHTTP");
return XMLHttp;
}
}