一、工厂模式概念解读
工厂模式定义一个用于创建对象的接口,这个接口由实例决定实例化哪一个类。该模式使得一个类的实例化延迟到了子类。而子类可以重写接口方法以便创建的时候指定自己的对象类型(抽象工厂)
这个模式十分有用,尤其是创建对象流程赋值的时候,比如依赖于很多设置文件等。并且,你会经常在程序里看到工厂方法,用于让子类定于需要创建的对象类型。
一、工厂模式的作用和注意事项
模式作用:
1.对象的构建十分复杂
2.需要依赖具体的环境创建不同的实例
3.处理大量具有相同属性的小对象
注意事项:
1.不能滥用工厂,有时候仅仅是给代码增加复杂度
三、工厂模式的代码实战及总结
下面是以产鞋子,产衣服,运输,厂长,消费者等角色构建起的一个工厂模式
<meta charset="utf-8">
<script>
//1.工厂应该有厂长 来决定到底执行那一条生产线
//消费者-》子类
var gongchang = {
};
gongchang.chanyifu = function (arg) {
this.gongren = 50;
alert('我们有'+this.gongren);
}
gongchang.chanxie = function (arg) {
alert('产鞋子~')
}
gongchang.yunshu = function (arg) {
alert('运输')
}
gongchang.changzhang = function (para) {
//new js我们应用了单例模式 构造函数模式
return new gongchang[para]();
}
var me = gongchang.changzhang('chanyifu');
alert(me.gongren)
</script>
下面我们以我们经常见得ajax对象为例,做一个简单的工厂:
<script>
//这是一个简单的工厂模式
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 XMLHttp = XMLHttpFactory.createXMLHttp();
}
</script>