一、传统的单例模式
保证一个类仅有一个实例,并提供一个访问它的全局访问点。实现思想:
就是使用一个变量来标志当前是否已经为某一个类创建过对象,如果是则下一次获取该类的实例的是时候,就直接返回该对象。下面为js来实现该思路
var Singleton = function( name ){
this.name = name;
};
Singleton.prototype.getName = function(){
alert ( this.name );
};
Singleton.getInstance = (function(){
var instance = null;
return function( name ){
if ( !instance ){
instance = new Singleton( name );
}
return instance;
}
})();
这里通过Singleton.getInstance
来获取Singleton
类的唯一对象,这样确实没问题。
上面代码中,我们使用CreateDiv来创建一个div
实例并将其插入网页中,但是当我们第二次创建的时候,只能返回给我们之前创建的实例。
三、单例模式的应用——登录框
class LoginFrom {
constructor() {
this.instance = null;
this.state = 'hide';
}
static getInstance() {
if (!this.instance) {
this.instance = new LoginFrom();
}
return this.instance;
}
show() {
if (this.state === 'show') {
alert('已经显示');
return;
}
this.state = 'show';
console.log('显示成功')
}
hide() {
if (this.state === 'hide') {
alert('已经隐藏');
return;
}
this.state='hide'
console.log('隐藏成功')
}
}
const login1 = LoginFrom.getInstance();
const login2 = LoginFrom.getInstance();
login1.show();//默认隐藏,调用该方法,打印显示成功
login2.hide();//因为是单例,状态同步,上述方法调用后登录框为显示状态,调用hide方法,打印隐藏成功
console.log(login1 === login2)//true
因为我们的登陆框实例只能存在一个,所以使用单例模式。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_47450807/article/details/123466904
内容来源于网络,如有侵权,请联系作者删除!