工厂模式是软件工程领域一种广为人知的设计模式,这种模式抽象了创建具体对象的过程。考虑到在ECMAScript中无法创建类,开发人员就发明了一种函数,用函数来封闭以特定接口创建对象的细节,如下的例子所示:
function createPerson(name, age, job) {
var o =
new Object();
o.name = name;
o.age = age;
o.job = job;
ob.syaName =
function() {
alert(
this.name);
}
return o;
}
var person1 = createName(
'Nicholas',
29,
'Software Engineer');
var person2 = createName(
'Greg',
27,
'Doctor');
函数createName能够根据接受的参数来构建一个包含所有必要信息的Person对象。可以无数次地调用这个函数,而每次它都会返回一个包含三个属性一个方法的对象。工厂模式虽然解决了创建多个相似对象的问题,但却没有解决对象识别的问题(即怎样知道一个对象的类型)。