javascript设计模式-抽象工厂模式

抽象工厂模式,是创建型模式的一种,其实是一个实现子类继承父类的方法,在这个方法中,通过传递子类以及要继承父类的名称,并且在抽象工厂方法中增加了对抽象类存在性的判断,如果存在,则将子类继承父类的方法。然后子类通过寄生式继承。

抽象工厂是用来创建子类的,本身可以视为一个类簇,它制定了子类的结构,让子类继承抽象工厂的方法及属性,因此抽象工厂模式可以创建多类对象。

例:定义抽象工厂方法:

var VehicleFactory = function (subFun, subClass) {

    if (typeof VehicleFactory[subClass] === 'function') {

        function F() {}
        F.prototype = new VehicleFactory[subClass]()
        subFun.constructor = subFun
        subFun.prototype = new F()
        console.log(subFun.prototype)
    } else {
        throw new Error('未创建的类对象')
    }
}
// 小车抽象类
VehicleFactory.Cars = function () {
    this.type = 'car'
}
VehicleFactory.Cars.prototype = {
    getPrice: function () {
        return new Error('抽象方法不能调用,请自定义子类方法')
    }
}

用抽象工厂来生成子类:

var Jili = function (price) {
    this.price = price;
}
VehicleFactory(Jili, 'Cars');
Jili.prototype.getPrice = function () {
    return this.price;
}
var jili = new Jili(200000);
console.log(jili.getPrice());    // 200000

 

posted @ 2017-05-25 22:42  汪培  阅读(353)  评论(0编辑  收藏  举报