JavaScript: 设计模式之单例模式
单例模式:
原理:
构造函数一生只创建一个对象
当构造函数创建的每个实例对象的属性和方法都一模一样的时候,就可以使用单例设计模式
(如: 工具类就可以使用单例设计模式)
案例一:
/*
案例一
*/
function fn(){
function Person(name){
this.name = name;
}
let per;
return function ff(){
if(!per){
per = new Person("小黑");
}
return per;
}
}
let f = fn();
let t1 = f();
let t2 = f();
console.log(t1 === t2); //true
案例二:
class Singleton{
constructor(name){
this.name = name;
this.instance = null;
}
/*
static 关键字:
类相当于实例的原型,所有在类中定义的方法,都会被实例继承,如果在一个方法前,
加上 static 关键字,就表示该方法不会被实例继承,而是直接通过类来调用,称为 " 静态方法 "
*/
static fn(name){
if(!this.instance){
this.instance = new Singleton(name);
}
return this.instance;
}
}
let s1 = Singleton.fn("小白");
let s2 = Singleton.fn("小黑");
console.log(s1 === s2); //true
console.log(s1.name); //小白
console.log(s2.name); //小白
|