Javascript实现单例模式

 更新时间:2016年01月24日 08:53:12   作者:Darren Ji  
单例模式也称作为单子模式,更多的也叫做单体模式。为软件设计中较为简单但是最为常用的一种设计模式。这篇文章主要介绍了Javascript实现单例模式的相关资料,需要的朋友可以参考下

单例模式也称作为单子模式,更多的也叫做单体模式。为软件设计中较为简单但是最为常用的一种设计模式。

单例模式的介绍:

    在应用单例模式时,生成单例的类必须保证只有一个实例的存在,很多时候整个系统只需要拥有一个全局对象,才有利于协调系统整体的行为。比如在整个系统的配置文件中,配置数据有一个单例对象进行统一读取和修改,其他对象需要配置数据的时候也统一通过该单例对象来获取配置数据,这样就可以简化复杂环境下的配置管理。

    单例模式的思路是:一个类能返回一个对象的引用(并且永远是同一个)和一个获得该实例的方法(静态方法,通常使用 getInstance 名称)。那么当我们调用这个方法时,如果类持有的引用不为空就返回该引用,否者就创建该类的实例,并且将实例引用赋值给该类保持的那个引用再返回。同时将该类的构造函数定义为私有方法,避免其他函数使用该构造函数来实例化对象,只通过该类的静态方法来得到该类的唯一实例。

一般情况下,Javascript每次new一个对象就产生一个实例,实例指向不同的地址。就像如下:

(function(){
function Person(name){
this.name = name;
}
Person.prototype.work = function(){
console.log(this.name + " is working");
}
var p1 = new Person("Darren");
p1.work();
var p2 = new Person("Jack");
p2.work();
}());

以上,每次new出一个Person对象都是不同的。

如何在Javascript中实现单例模式呢?

--在生成某各对象时先判断是否存在。存在就不生成对象,不存在就生成对象。

(function(){
var PersonSingleton = (function(){
var instance;
function init(){
return {
name: 'Anonymous',
work: function(){
console.log(this.name + ' working');
}
};
}
return {
getInstance: function(){
if(!instantiated){
instantiated = init();
}
return instantiated;
}
}
})();
var p1 = PersonSingleton.getInstance();
p1.work();
var p2 = PersonSingleton.getInstance();
p2.work();
}());

以上,通过PsonSIngleton对象的getInstance方法得到的实例每次都是一样的。

关于javascript单例模式的相关知识就给大介绍到这里,希望对大家有所帮助。

相关文章

  • 详解JavaScript的垃圾回收机制

    详解JavaScript的垃圾回收机制

    这篇文章主要为大家介绍了JavaScript的垃圾回收机制,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-11-11
  • js实现双击图片放大单击缩小的方法

    js实现双击图片放大单击缩小的方法

    这篇文章主要介绍了js实现双击图片放大单击缩小的方法,涉及js操作图片及onclick与ondblclick事件的使用技巧,需要的朋友可以参考下
    2015-02-02
  • 原生JS实现数码表特效

    原生JS实现数码表特效

    这篇文章主要为大家详细介绍了原生JS实现数码表特效,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • 利用js+css+html实现固定table的列头不动

    利用js+css+html实现固定table的列头不动

    本文分享了利用js+css+html实现固定table的列头不动的实例代码。小编认为具有很好的参考价值,感兴趣的朋友可以看下
    2016-12-12
  • Html和JS字符串中间加空格的简单实例

    Html和JS字符串中间加空格的简单实例

    最近遇到了个需求,需要在字符串的中间加上一两个字符串,所以下面这篇文章主要给大家介绍了关于Html和JS字符串中间加空格的相关资料,文中介绍的挺详细,需要的朋友可以参考下
    2023-02-02
  • Javascript HTML5 Canvas实现的一个画板

    Javascript HTML5 Canvas实现的一个画板

    这篇文章主要为大家详细介绍了Javascript HTML5 Canvas实现的一个画板的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • js判断上传文件后缀名是否合法

    js判断上传文件后缀名是否合法

    这篇文章主要介绍了js判断上传文件后缀名是否合法的具体方法,以一个完整实例分析了javascript判断上传文件后缀名是否合法的方法,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • Javascript生成器(Generator)的介绍与使用

    Javascript生成器(Generator)的介绍与使用

    这篇文章主要给大家介绍了关于Javascript生成器(Generator)的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • JavaScript三种方法解决约瑟夫环问题的方法

    JavaScript三种方法解决约瑟夫环问题的方法

    约瑟夫环问题又称约瑟夫问题或丢手绢问题,是一道经典的算法问题,本篇将以循环链表、有序数组、数学递归三种方式来解决约瑟夫环问题。感兴趣的可以了解一下
    2021-09-09
  • JS实现按钮添加背景音乐示例代码

    JS实现按钮添加背景音乐示例代码

    这篇文章主要介绍了JS实现按钮添加背景音乐示例代码,需要的朋友可以参考下
    2017-10-10

最新评论