这几天一直在看《JavaScript高级程序设计》,在第六章面向对象的程序设计中,自我感觉对于小白而而言,会一定程度的难以理解(什么意思啊,根本不明白哇等等)注意:大神请略过,小小码农,不敢妄言。
首先,我们开门见山,什么是工厂模式,工厂模式能干什么,又是怎么用的呢
1.什么是工厂模式
这里说一下,工厂模式(Factory Pattern)是软件工程领域的一种广为人知的设计模式,这种模式抽象了创建具体对象的过程。但是呢,对于JavaScript而言,在ECMAScript中无法创建类,开发人员就发明了一种函数,用函数来封装以特定接口创建对象的细节。
划重点:工厂模式是用来创建对象的一种常见的设计模式。我们不暴露创建对象的具体逻辑,将逻辑封装在一个函数中,这个函数被视为一个工厂。
二话不说,直接上代码:
function createFactory(name,age,job) {
var o = new Object();
o.name = name;
o.age = age;
o.job = job;
o.sayName = function (){
alert(this.name);
}
return 0;
}
//实例化
var person1 = new createFactory("Xiao Ming",24,"Software Engineer");
var person2 = new createFactory("Xiao Hong",20,"Doctor");
//输出控制台
console.log(person1.name);//Xiao Ming
console.log(person2.sayName());//Xiao Hong
在这里,createFactory函数就是视为一个工厂,在工厂里面,它能够根据接受的参数(name,age,job)来构建一个包含这些信息的对象。可以无数次的调用这个函数,每次都会返回(这里是三个属性和一个方法)的对象。
工厂用来干什么: 当然这个前文已经说过了,用函数来封装以特定接口创建对象的细节(不太明白?)。就是将相同的逻辑(属性和方法)封装在函数中,实现对象的创建。
怎么用它呢?
1、对象构建十分复杂;比如说,衣服我们穿的时候很简单,但是做衣服的过程却是很复杂。则做衣服的过程可以使用工厂模式。
2、需要依赖具体的环境创建不同的实例;比如说,在工厂里不仅仅是做衣服的,还有做其他的(鞋,袜子等等),这些东西可以看做都不同的实例
3、处理大量具有相同属性的小对象。比如说,我们就买一件衣服,就没必要去工厂里生产。当需求量很大的时候,可以选择工厂。
划重点不能滥用工厂,会增加代码的复杂度。