定义

单例模式就是一个类只能实例化一个对象,并且提供了一个访问它的全局访问点。

一般在实现登陆框,或者一个全局的控制器都会用到单例模式。现实中有window对象,线程池,全局缓存等。

简单实现

var Person = function(name){
this.name = name;
this.instance = null;
};
Person.getInstance = function(name){
if(!this.instance){
this.instance = new Person(name);
}
return this.instance;
}

种类

单例模式的实现由很多种方法,他们也有不同的作用。

1.用代理实现的单例

有时候,如果想让一个类既可以通过代理创建一个实例,又可以使用普通的方法new很多实例,这种情况就会用到代理。

var Person = function(name){
this.name = name;
};
var CreatePerson = (function(){
var instance;
return function(name){
if(!instance){
return new Person(name);
}
return instance;
}
});

上面代码中,如果我们要创建一个实例,就用createPerson来创建,如果像普通对象一样,就用new创建。

2.惰性单例

其实开始介绍的简单单例模式即是惰性单例,也就是说,这个实例在需要的时候才会创建。而不是一开始就创建。

 

最新文章

  1. C# 提交网页请求时出现如下错误: System.Net.WebException: 操作超时
  2. Count Complete Tree Nodes
  3. web安全之sql注入的防御
  4. Linux磁盘管理之设备文件详解04
  5. sql server 判空查询
  6. Android NDK 学习之传递类对象
  7. Linux 基础知识----shell
  8. 斐波那契(Fibonacci)数列的七种实现方法
  9. Unity三种截屏方法(非自带API)
  10. 配置错误--分析器错误消息: 无法识别的属性“targetFramework”。请注意属性名称区分大小写。
  11. 5.7.1.4 window对象
  12. python爬虫从入门到放弃前奏之学习方法
  13. 女皇武则天:我不愿被 extends
  14. Odoo 12 开发手册指南(八)—— 业务逻辑 – 业务流程的支持
  15. (17/24) webpack实战技巧:生产环境和开发环境并行设置,实现来回切换
  16. 2017.11.10 重读C++ Primer
  17. OpenCV 填充(ROI)+模糊操作
  18. jni4net使用小结
  19. C++学习(十一)(C语言部分)之 练习
  20. Modularizing your graphQL schemas

热门文章

  1. html表格表单标签的结合
  2. NodeJs的简单介绍
  3. java(5)循坏结构
  4. mysql之 MySQL 主从基于 GTID 复制原理概述
  5. javaCV开发详解之3:收流器实现,录制流媒体服务器的rtsp/rtmp视频文件(基于javaCV-FFMPEG)
  6. 用Java写的简单五子棋游戏(原创五子连珠算法)
  7. 关于sqlmap的一些命令
  8. ecshop开发帮助
  9. arcgis api for js入门开发系列十叠加SHP图层
  10. 如何设计相对安全的cookie自动登录系统