单例模式 详解
来源:互联网 发布:与sqlserver建立连接 编辑:程序博客网 时间:2024/04/30 03:04
定义
保证一个类仅有一个实例,并且提供一个访问它的全局访问点;
(在该实例不存在的情况下,可以通过一个方法创建一个类来实现创建类的新实例;如果实例已经存在,它会简单返回该对象的引用)
创建型模式
适用场景
- 当类只有一个实例而且客户可以从一个众所周知的访问点访问它时;
- 该唯一的实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时;
实现代码
var Singleton = (function () { //保持了Singleton的一个引用 var instance; function init () { var privateRandomNum = Math.random(); return { getRandomNum : function () { return privateRandomNum; } } }; return { getInstance : function () { if (!instance) instance = init(); return instance; } };})();var singleA = Singleton.getInstance();var singleB = Singleton.getInstance();console.log(singleA.getRandomNum() === singleB.getRandomNum());var WRSingleton = (function () { var instance; function init () { var privateRandomNum = Math.random(); return { getRandomNum : function () { return privateRandomNum; } } }; return { getInstance : function () { instance = init(); return instance; } };})();var wrsingleA = WRSingleton.getInstance();var wrsingleB = WRSingleton.getInstance();console.log(wrsingleA.getRandomNum() === wrsingleB.getRandomNum());
- 其实两段代码的差别在于,前者获取对象的实例,如果存在就返回,不存在就创建实例;而后者每次都要创建新实例,不会判断实例已经创建;
- init 中的是私有方法和变量,而 return 中的是公有方法和变量;
0 0
- 单例模式详解
- 单例模式详解
- 单例模式详解
- 单例模式详解
- 单例模式详解
- 单例模式详解
- 单例模式详解
- 单例模式详解
- 单例模式详解
- 详解单例模式
- 单例模式详解
- 单例模式详解
- 详解【单例模式】
- 单例模式 详解
- 单例模式详解
- 单例模式详解
- 单例模式详解
- 详解单例模式
- 第三天:制定项目计划
- 第四天:规划范围管理
- unity优化—资源优化
- 第五天:收集需求
- fitsSystemWindows
- 单例模式 详解
- POI---JAVA导出Excel文件<二>Excel格式设置
- 静态方法 (static)
- SICP 习题2.43 八皇后问题flatmap嵌套反了
- UE4创建透明水的效果
- 编译go1.7beta2
- [强烈推荐] thinkphp iis7.5 win2008 上 设置虚拟静态 错误的解决方法 web.config
- [九度OJ]最短路径
- Codeforces 543 A Writing Code 计数DP