设计模式之单例模式

单例模式

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

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 @   懒惰ing  阅读(92)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示