码迷,mamicode.com
首页 > 其他好文 > 详细

入门设计模式——单例模式

时间:2016-02-24 15:36:16      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:

参考文章:

http://www.cnblogs.com/TomXu/archive/2012/02/20/2352817.html


单例模式:保证一个类只有一个实例,实现方法是先判断实例存在与否,如果存在直接返回,如果不存在就创建了再返回,确保一个类只有一个实例对象。

在javascript里,单例作为一个命名空间提供者,从全局命名空间里提供了一个唯一的访问点来访问该对象。

自我感受:单例模式是在内部实例化了一次对象A,然后返回这个实例instance,所以在外部再new一个对象A的时候,得到的就是这个对象A的实例instance;

相当于将所有在外部实例化A的对象的都是instance的引用; 对的,就是引用,指针指向同一个内存区域,所以不管是instance ,还是通过new A()new出来的对象a,b,c,d....它们中任意一个,做出任何改变,都会影响其他人,因为它们共用一个内存区域嘛!!

可以把外部new出来的对象,其实可以看成是一个人,只是用的不同的名字而已啦!

 接下来就来阐释一下单例模式的实现方法:

 (1)最简单的方法:对象字面量的方法

var Singleton = (function () {
var instantiated;
function init() {
/*这里定义单例代码*/
return {
publicMethod: function () {
console.log(‘hello world‘);
},
publicProperty: ‘test‘
};
}

return {
getInstance: function () {
if (!instantiated) { //确保只有一个实例
instantiated = init(); //使用init方法,是使publicMethod和publicP                        roperty只在要使用的时候才初始化;
}
return instantiated;
}
};
})();

/*调用公有的方法来获取实例:*/
Singleton.getInstance().publicMethod();

(2)方法二:

function Universe() {

    // 判断是否存在实例
    if (typeof Universe.instance === object) {
        return Universe.instance;
    }

    // 其它内容
    this.start_time = 0;
    this.bang = "Big";

    // 缓存
    Universe.instance = this;

    // 隐式返回this
}

 

入门设计模式——单例模式

标签:

原文地址:http://www.cnblogs.com/shixiaomiao/p/5212122.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!