首先,了解一下什么是单例模式,这里我直接把菜鸟教程中的定义给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来判断是构造新的对象还是返回已有对象。

最新文章

  1. Lind.DDD敏捷领域驱动框架~介绍
  2. 如何在latex 中插入EPS格式图片
  3. jquery的html,text,val
  4. STL之容器基本操作
  5. 剑指offer——替换字符串
  6. MFC添加自定义消息
  7. jquery 里 $(this)的用法
  8. Python核心编程笔记--动态属性
  9. apple watch 与 iphone 之间的通信方式
  10. decode-ways(动态规划)
  11. macOS Mojave配置OpenGL开发环境
  12. B - Housewife Wind-树链剖分-树状数组
  13. hightopo学习之旅一 -- 节点动画
  14. Logstash安装和使用
  15. python 中logging模块
  16. WinHttp编写HTTP服务器示例代码
  17. Typescript : 遍历Array的方法:for, forEach, every等
  18. [BZOJ1106/POI2007]Tet立方体大作战
  19. 转一篇Git代码回滚技巧
  20. Oracle transport tablespace

热门文章

  1. Lua 学习之基础篇三<Lua 字符串操作>
  2. GDI+图像编程
  3. 如何查看JVM的内存
  4. android studio连接MYSQL8.0报错:java.long.unsupportedOperation处理方案
  5. 2019HDU多校第六场1009 Three Investigators——杨表
  6. [hdoj6415 Rikka with Nash Equilibrium][dp]
  7. 21、自动装配-@Resource&@Inject
  8. dblclick([[data],fn]) 当双击元素时,会发生 dblclick 事件。
  9. How to connect oracle databse
  10. 利用模板和C++11特性实现的智能指针-作用同share_ptr