什么是工厂模式?就好比一个工厂,能造汽车、飞机...,通过对外接口,由顾客决定,来定制哪一款产品。
在js内表现为,一个工厂函数/对象,包含汽车、飞机等子类,提供对外接口,根据参数返回不同子类的实例
简单实例如下:
var factory= {
car:function(name, size){
this.name= name;
this.size= size;
this.getName= function(){
return this.name
}
},
plane:function(name, size){
this.name= name;
this.size= size;
this.getName= function(){
return this.name
}
},
makeCar:function(name, size){
return new this.car(name, size)
},
makePlane:function(name, size){
return new this.plane(name, size)
},
make:function(type, name, size){
return new this[type](name, size)
}
} var o= factory.make('plane', '波音', 1000)
console.log(o.getName())
何时使用:
1.对象构建十分复杂
2.需要依赖具体环境创建不同实例
3.处理大量具有相同属性的小对象
优点:
消除对象之间的耦合,将所有实例化的代码放在一个位置以免代码重复
缺点:
大多数类最好使用new关键字和构造函数,可以让代码更加简单易读。而不必去查看工厂方法来知道