javaScript设计模式

创建型模式

1. 构造器模式(构造函数)

用于创建同一类的不同对象
比如我要录入学生信息,每一个学生都是一个具体的对象,录入一个学生就要创建一个对象,上百各学生就要创建上百个对象吗?

const xiaoming={
	name:'xiaoming',
	age:18,
	id:'34234211'
}
const xiaohong={
	name:'xiaohong',
	age:17,
	id:'32565453'
}
// 不可能给每一个学生都手动创建对象
// 使用构造函数来创建对象,这也是为什么要使用类
function Student(name,age,id){
	this.name=name
	this.age=age
	this.id=id
}
const xiaoguang=new Student('xiaoguang',19,'34214552')

在这里插入图片描述

2. 工厂模式

用于创建不同类的不同对象,工厂不可能只生产单一的商品,它有不同的模具,可以生产不同类型的商品
在这里插入图片描述
如果没有工厂模式,我们如何去生产这些动物?我们就需要各种new我们要手动去创建对象去管理这些对象对不对。
工厂模式做了什么?我们只需要提要求,由工厂帮我们去创建管理这些对象,相当程度上简化了我们的工作。

type AnimalType='pig'|'sheep'|'cattle'
function Factory(type){
	switch(type){
		case "pig":
			// 一些处理
			return new Pig()
		case "sheep"// 一些处理
			return new Sheep()
		case "cattle"
			// 一些处理
			return new Cattle()
		default:
			throw new Error('错误')
	}
}
const pig=Factory('pig')

使用工厂函数我们创建和管理对象就变得更方便了

3. 抽象工厂

虽然工厂函数为我们提供了很多便利,但是它还是有不小的问题,比如这个工厂完全依赖于它养殖的对象,它只能养猪、羊、牛它没办法养其它东西了对吧。这个违背了依赖倒置原则,高层模块不能依赖于低层模块,都因该依赖于抽象。
现在要改造这个养殖场,让它能养任何动物,因该怎么做?
在这里插入图片描述
不管你是什么动物,只要你实现了Animal 接口,我这养殖场就可以养。以后想养什么就养什么,再也不用改造养殖场。
这就是模块不能依赖于具体,要依赖于抽象。

4. 原型模式 JavaScript继承

首先了解类、对象、原型之间的关系
在这里插入图片描述
类和对象是通过原型关联起来的,确定了原型就能知到对象的类是谁。

function Student(){
	toExam(){
		console.log('去考试')
	}
}

当我们通过这个构造函数创建多个对象时,每个对象都会有这个toExam方法,由于这个方法每个对象都是一样的,我们没有必要给他们都添加这个方法。只需要将这个方法放在原型上就好了

Student.prototype.toExam=()=>{console.log('去考试')}

原型模式就是让你将重复的方法和属性挂载到原型上。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值