@(study)[JavaScript, 创建性设计模式, 设计模式]
创建型设计模式
简单工厂模式
简单工厂模式就是不用手动去针对不同类型的相似对象去手动创建类,而是把这个创建类的过程交由JavaScript来帮你创建,你只需要告诉这个工厂方法你需要创建什么样的类就行了。
function Factory(type) { // 工厂方法
function Ball() {
this.name = 'ball'
this.user = 'palyer'
}
function Book() {
this.name = 'book'
}
switch(type) {
case 'book':
return new Book()
case 'ball':
return new Ball()
}
}
var book1 = Factory('book')
var ball1 = Factory('ball')
如果有很多相似的属性或者方法,可以先抽象出他们共同的相似部分,然后再根据特殊的情况创建特殊属性方法。
function Factory(type, name) { // 工厂方法
var i = new Object()
i.name = name
switch(type) {
case 'book':
i.user = 'palyer'
case 'ball':
i.reader = 'everybody'
}
return i
}
第一种是通过实例化对象来创建的,第二种是通过创建一个新对象然后包装增强其属性和功能来实现的。他们之间的差异性也造成前面通过类创建的对象,如果这些类继承同一父类,那么他们的父类原型上的方法是公用的。而后面寄生方式创建的对象都是一个新的个体,所以他们的方法就不能共用了。