JS学习六(抽象工厂模式)

8 篇文章 0 订阅
6 篇文章 0 订阅

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

			// 抽象工厂方法
			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
			//基类函数
			//基类函数

子类对象结构
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值