JS设计模式之简单工厂模式

简单工厂模式

介绍

把特征相同的类封装在一个函数中,这样只需要通过这个函数就可以创建需要的对象。例子如下


// 篮球基类
var BasketBall = function (){
	this.intro='篮球'
}
BasketBall.prototype = {
	getMember:function (){
		console.log('每个队伍需要5名队员')
	},
	getBallSize:function () {
		console.log('篮球有特定大小')
	}
}
// 足球基类
var FootBall = function (){
	this.intro='篮球'
}
FootBall.prototype = {
	getMember:function (){
		console.log('每个队伍需要5名队员')
	},
	getBallSize:function () {
		console.log('篮球有特定大小')
	}
}

var SportsFactory = function (name) {
	switch (name){
		case 'NAB':
			return new BasketBall();
		case 'wordCup':
			return new FootBall();
	}
}

var football = SportsFactory('wordCup')
console.log(football)
console.log(football.intro)
football.getMember()

当函数中的几个类有相同的内容时,是可以抽象提取出来共用的,可以用简单工厂的方式实现
例如创建一些书,这些书共有的属性可以封装到一个类中,这里为了简便我就用上面的已有的代替,然后不同的属性可以作为参数传递进来处理

	function createBook(name,time,type) {
		var o = new BasketBall()
		o.name = name
		o.time = time
		o.type = type
		o.show = function (){
			console.log(this.name)
		}
		return o
	}

	var book1 = createBook('js',2134,'js')
	book1.show() // js
	console.log(book1.intro) //篮球
  book1.getMember()//每个队伍需要5名队员

第一种是通过类的实例化对象创建的, 第二种是通过创建一个新对象然后包装增强其属性和功能来实现的。
差异性

  1. 前面的通过类创建对象,如果这些类继承同一父类,那么其父类上的原型方法可以公用
  2. 而后面的寄生方式创建的对象都是一个个体,他们的方法无法共用

记录

团队项目时尽量少创建全局变量
对于同一类对象在不同需求中的重复性使用,很多时候不需要重复创建,代码复用是面向对象编程的一条准则
通过简单工程来创建一些对象,可以让这些对象共用一些代码资源而又私有一些资源
使用场合限制在创建单一对象

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值