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