JS设计模式:工厂模式

工厂模式是一种创建型模式。它的特点在于,提供一个通用的接口来创建对象,不显式地要求使用一个构造函数,我们可以指定我们所希望创建的对象工厂的类型。

假设有一个UI工厂,我们要创建一个UI组件的类型。不需要直接使用new运算符或者通过另一个创建型构造函数创建这个组件,而是要求Factory对象创建一个新的组件。我们通知Factory需要什么类型的对象,它会进行实力化,然后将它返回给我们。

PS.除非为创建对象提供一个接口是我们正在编写的库或框架的设计目标,否则建议坚持使用显示构造函数,以避免不必要的开销。

//Car构造函数
function Car(options){
	this.doors=options.doors||4
	this.state=options.state||"brand new"
	this.color=options.color||'silver'
}

//Truck构造函数
function Truck(options){
	this.state=options.state||'used'
	this.wheelSize=options.wheelSize||'large'
	this.color=options.color||'blue'
}


//vehicle工厂
function VehicleFactory(){ }

VehicleFactory.prototype.vehicleClass=Car

//创建新vehicle实例的工厂方法
VehicleFactory.prototype.createVehicle=function(options){
	if(options.vehicleType==="car"){
		this.vehicleClass=Car
	}else{
		this.vehicleClass=Truck
	}

	return new this.vehicleClass(options)
}


//创建生成汽车的工厂实例
var carFactory=new VehicleFactory()
var car=carFactory.createVehicle({
	vehicleType:'car',
	color:'yellow',
	doors:6
})

console.log(car instanceof Car) //true
console.log(car) //Car对象

例子来源《JavaScript设计模式》人民邮电出版社

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值