用JavaScript来实现单例模式
2024-08-31 22:09:24
首先,了解一下什么是单例模式,这里我直接把菜鸟教程中的定义给copy过来:
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
注意:
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
用一句话来总结就是:在单例模式中,一个类仅有一个实例,并提供一个访问它的全局访问点。这无非是用一个变量来标志当前是否已经为某个类创建过对象,如果是,则在下一次获取该类的实例时,直接返回之前创建的对象,在JavaScript我们很自然而然就会想到用闭包来解决这个问题。
比如说需要生成一个页面登录框,因为有且只可能有一个登录框,那么你就可以用单例的思想去实现他,代码如下:
let createLoginWindow = function(title) {
this.title= title;
this.init();
} createLoginWindow.prototype.init = function() {
// some code }
let proxySingleton = (function() {
var instance;
return function(title) {
if (!instance) {
instance = new createLoginWindow(title);
}
return instance;
}
})();
let windowA = new proxySingleton('login1');
let windowB = new proxySingleton('login2'); console.log(windowA === windowB); // true
可以看到,上述代码中createLoginWindow负责构造对象,然后通过代理proxySingleton来判断是构造新的对象还是返回已有对象。
最新文章
- Lind.DDD敏捷领域驱动框架~介绍
- 如何在latex 中插入EPS格式图片
- jquery的html,text,val
- STL之容器基本操作
- 剑指offer——替换字符串
- MFC添加自定义消息
- jquery 里 $(this)的用法
- Python核心编程笔记--动态属性
- apple watch 与 iphone 之间的通信方式
- decode-ways(动态规划)
- macOS Mojave配置OpenGL开发环境
- B - Housewife Wind-树链剖分-树状数组
- hightopo学习之旅一 -- 节点动画
- Logstash安装和使用
- python 中logging模块
- WinHttp编写HTTP服务器示例代码
- Typescript : 遍历Array的方法:for, forEach, every等
- [BZOJ1106/POI2007]Tet立方体大作战
- 转一篇Git代码回滚技巧
- Oracle transport tablespace
热门文章
- Lua 学习之基础篇三<;Lua 字符串操作>;
- GDI+图像编程
- 如何查看JVM的内存
- android studio连接MYSQL8.0报错:java.long.unsupportedOperation处理方案
- 2019HDU多校第六场1009 Three Investigators——杨表
- [hdoj6415 Rikka with Nash Equilibrium][dp]
- 21、自动装配-@Resource&;@Inject
- dblclick([[data],fn]) 当双击元素时,会发生 dblclick 事件。
- How to connect oracle databse
- 利用模板和C++11特性实现的智能指针-作用同share_ptr