js抽象工厂模式

308 阅读1分钟

简介 抽象工厂其实是实现子类继承父类的方法,只是一个方法。抽象工厂模式一般用在多人协作的超大型项目中,并且严格的要求项目以面向对象的思想进行完成。 实例

// 抽象工厂方法
var abstractFactory = function(subType, superType) {
    // 判断抽象工厂中是否有该抽象类
    if(typeof abstractFactory[superType] === 'function') {
	// 缓存类
	function F() {};
	// 继承父类属性和方法
	F.prototype = new abstractFactory[superType]();
	// 将子类constructor 指向子类
	subType.constructor = subType;
	// 子类原型继承'父类'
	subType.prototype = new F();
    } else {
	// 不存在该抽象类抛出错误
	throw new Error('未创建该抽象类');
    }
};

// 小汽车抽象类
abstractFactory.Car = function() {
   this.type = 'car';
};
abstractFactory.Car.prototype = {
	getPrice1: function() {
	     return '基类函数';
	},
	getSpeed1: function() {
		return '基类函数';
	}
};
			
// 创建产品子类继承相应的产品簇抽象类
// 创建MyCar子类
var MyCar = function(price, speed) {
   this.price = price;
   this.speed = speed;
}
//抽象工厂实现对Car抽象类的继承
abstractFactory(MyCar, 'Car');
MyCar.prototype.getPrice = function() {
   return this.price
};
MyCar.prototype.getSpeed = function() {
   return this.speed
};
var bmw = new MyCar(11000, 200);
var speed = bmw.getSpeed();
var price = bmw.getPrice();
var speed1 = bmw.getSpeed1();
var price1 = bmw.getPrice1();

console.log(speed);
console.log(price);
console.log(speed1);
console.log(price1);
//200
//11000
//基类函数
//基类函数						

子类对象结构

image.png