用JavaScript实现一个单例模式
2011-10-08 00:00
597 查看
单例模式的基本结构:
比如:
但是,上面的Singleton在代码一加载的时候就已经建立了,怎么延迟加载呢?采用下面这种模式:
具体来说,把创建单例的代码放到constructor里,在首次调用的时候再实例化:
完整的代码如下:
MyNamespace.Singleton = function() { return {}; }();
比如:
MyNamespace.Singleton = (function() { return { // Public members. publicAttribute1: true, publicAttribute2: 10, publicMethod1: function() { ... }, publicMethod2: function(args) { ... } }; })();
但是,上面的Singleton在代码一加载的时候就已经建立了,怎么延迟加载呢?采用下面这种模式:
MyNamespace.Singleton = (function() { function constructor() { // All of the normal singleton code goes here. ... } return { getInstance: function() { // Control code goes here. } } })();
具体来说,把创建单例的代码放到constructor里,在首次调用的时候再实例化:
完整的代码如下:
MyNamespace.Singleton = (function() { var uniqueInstance; // Private attribute that holds the single instance. function constructor() { // All of the normal singleton code goes here. ... } return { getInstance: function() { if(!uniqueInstance) { // Instantiate only if the instance doesn't exist. uniqueInstance = constructor(); } return uniqueInstance; } } })();
相关文章推荐
- 一个用简单的JavaScript及Css实现的模式层
- 你知道的,javascript语言的执行环境是"单线程模式",这种模式的好处是实现起来比较简单,执行环境相对单纯;坏处是只要有一个任务耗时很长,后面的任务都必须排队等着,会拖延整个程序的执行,因此很多时候需要进行“异步模式”,请列举js异步编程的方法。
- 介绍一个款可以在javascript对象上实现观察者模式的类库-Watch.js
- 实现一个函数clone,可以对JavaScript中的5种主要的数据类型(包括Number、String、Object、Array、Boolean)进行值复制。
- JavaScript原生实现观察者模式的示例
- JavaScript中“单实例模式(单值模型)”的实现
- [转载]Juicer – 一个Javascript模板引擎的实现和优化
- 一个简单但常用的javascript表格样式_鼠标划过行变色 简洁实现
- 实现一个只能实例化一次的类 即 单例模式(Singleton)
- 分享一个自己利用javascript中的window.setInterval()定时器实现页面背景图片淡入淡出效果
- 养成一个好习惯:在严格模式下开发Javascript
- 一个不错的用JavaScript实现的UBB编码函数
- JavaScript 通过模式匹配实现重载
- 《Orange’s 一个操作系统的实现》3.保护模式8-页式存储
- 基于JavaScript实现一定时间后去执行一个函数
- Javascript中克隆一个数组的实现代码
- Javascript--混合模式实现继承
- javascript 原型模式实现OOP的再研究
- javascript 通过模块模式实现代码访问控制
- 详解JavaScript实现设计模式中的适配器模式的方法