设计模式(二)单例模式

设计模式

设计模式的官方定义:是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。

个人理解的话,就是,设计模式是一种解决某些特定的问题的通用模型。也就是在项目中遇到某些问题时,刚好这些问题、场景符合设计模式中的某一种,使用设计模式可以使得问题得到更好的解决,让代码更加优雅、提高代码复用性和可读性。

毕竟这些知识都是无数前辈们经历过后,总结的出来的经验,都是精华。

我看设计模式是从前端出发的,没有很全面,但是也足够用了。

设计模式分类三种类型:

  • 结构型模式
  • 创建型模式
  • 行为型模式

每种类型具体有哪些,还需要学习、总结才知道~~~~

今天写的单例模式是属于创建型模式

单例模式的定义

单例模式:保证一个类只有一个实例对象,并提供一个访问它的全局访问点。

简单点说就是,一个类只能new出来一个对象,并且只开放一个访问该对象的方法。

其实这种场景很常见,在生活中,每个国家只有一位总领导人,一个国家首都。
转化成编程语言就是:
“领导人”这个类,不管new几次,都是第一次创建的那个对象。
“首都”这个类,不管创建了几次,得到的都是第一次new的结果。

实现单例模式的核心思想就是:使用闭包,判断当前类是否存在实例对象,存在则返回存在对象,否则创建新对象。

实现

写一个函数,参数是一个构造函数或类,返回参数,只是把参数函数变成单例的。

function singleMode(Constructor) {
	let instance;
	return function (arg) {
		if (!instance) {
			instance = new Constructor(arg);
		}
		return instance;
	};
}

function Person(name, age) {
	this.name = name;
	this.age = age;
}

const single = singleMode(Person);
const s1 = new single("gg", 18);
const s2 = new single("ff", 13);
console.log(s1 == s2); // true

下次写工厂模式~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值