设计模式
设计模式的官方定义:是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。
个人理解的话,就是,设计模式是一种解决某些特定的问题的通用模型。也就是在项目中遇到某些问题时,刚好这些问题、场景符合设计模式中的某一种,使用设计模式可以使得问题得到更好的解决,让代码更加优雅、提高代码复用性和可读性。
毕竟这些知识都是无数前辈们经历过后,总结的出来的经验,都是精华。
我看设计模式是从前端出发的,没有很全面,但是也足够用了。
设计模式分类三种类型:
- 结构型模式
- 创建型模式
- 行为型模式
每种类型具体有哪些,还需要学习、总结才知道~~~~
今天写的单例模式是属于创建型模式。
单例模式的定义
单例模式:保证一个类只有一个实例对象,并提供一个访问它的全局访问点。
简单点说就是,一个类只能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
下次写工厂模式~~