组团学

JavaScript-单例模式

阅读 (423)

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

  • 特点

    • 某个类只能有一个实例
    • 它必须自行创建这个实例
    • 它必须自行向整个系统提供这个实例
  • 从具体实现角度来说,就是以下三点:

    • 单例模式的类只提供私有的构造函数
    • 类定义中含有一个该类的静态私有对象
    • 该类提供了一个静态的公有的函数用于创建或获取它本身的静态私有对象
  • 实现

    var single = (function(){ var unique; function getInstance(){ if (unique === undefined){ unique = new Construct(); } return unique } function Construct(){ // ... 生成单例的构造函数的代码 this.name = "tom"; } return { getInstance: getInstance } })() p1 = single.getInstance(); p2 = single.getInstance(); console.log(p1 == p2);//true console.log(p1 === p2);//true
  • 应用

    1. 模块间通信
    2. 系统中某个类的对象只能存在一个
    3. 保护自己的属性和方法
需要 登录 才可以提问哦