设计模式之单例模式

单例模式

  • 定义:是保证一个类只有一个实例,并且提供一个访问它的全局访问点。
  • 解释; 当已经有一个实例时,并不会创建一个新的实例,而是返回现有的实例。
  • 应用场景:比如一个网站的登录,点击登录后弹出一个登录弹框,即使再次点击,也不会再出现一个相同的弹框。
  • 要实现一个单例模式,一个经典的方式是创建一个类,类中有一个方法能创建该类的实例对象,还有一个标记,记录是否已经创过了实例对象。如果对象已经存在,就返回第一次实例化对象的引用。

ES5

// 单例模式
var Singleton = function(name) {
	this.name = name;
	this.instance = null;
};
Singleton.prototype.getName = function() {
	return this.name;
};
// 获取实例对象
Singleton.getInstance = function(name) {
	if (!this.instance) {
		this.instance = new Singleton(name);
	}
	return this.instance;
};
// 测试单例模式的实例
var a = Singleton.getInstance("aa");
var b = Singleton.getInstance("bb");
console.log(a === b) // true

ES6

class Singleton {
    constructor(name) {
        this.name = name;
	    this.instance = null;
    }
    static getInstance(name) {
       if (!this.instance) {
		this.instance = new Singleton(name);
	}
	return this.instance;   
    }
}
// 测试单例模式的实例
var a = Singleton.getInstance("aa");
var b = Singleton.getInstance("bb");
console.log(a === b) // true
posted @ 2021-01-04 00:01  懒惰ing  阅读(91)  评论(0编辑  收藏  举报