特点
用一个工厂函数来控制多个类的对象创建,在创建对象的时候不用再关心具体要使用哪一个类。
使用场景
管理很多创建单例的类
实现方式一:
function Factory(type) {
switch(type) {
case 'Football':
return new Football();
case 'Basketball':
return new Basketball();
}
}
function Football () {
this.name = 'football';
this.number = 11;
}
function Basketball () {
this.name = 'basketball';
this.number = 10;
}
var foo = Factory('Football');
console.log(foo.name); // 'football'
实现方式二:
function Factory(name, number) {
var o = new Object();
o.name = name;
o.number = number;
o.sayName = function() {
console.log(this.name);
}
return o;
}
var someBall = new Factory('basketball', 11);
someBall.sayName(); // basketball
两种方式的比较:
- 第一种方式是通过对象实例化创建
特点:所有创建的对象可以共用父类原型方法 - 第二种方式是创建一个新对象,对然后包装增强其属性和功能
特点:通过寄生方式创建的,每个对象都是一个新的个体,方法不能共用