思想
将创建对象的工作推迟到子类(Factory)中去
和简单工厂模式的区别
之前的简单工厂,每增加一个类同时还要修改工厂函数,也就是修改两处。
function Factory(type, content) {
if(this instanceof Factory) { // 判断是否使用new关键字
return new this[type](content);
} else {
return new Factory(type, content);
}
}
Factory.prototype = {
Java: function (content) {
this.name = 'Java';
this.content = content;
},
JavaScript: function (content) {
this.name = 'JavaScript';
this.content = content;
},
Python: function (content) {
this.name = 'Python';
this.content = content;
}
}
var foo = new Factory('JavaScript', 'ECMA');
console.log(foo);
// [object Object] {
// content: "ECMA",
// name: "JavaScript"
// }