`
darrenzhu
  • 浏览: 802128 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JavaScript单例模式Singleton Pattern

阅读更多
参考链接:http://www.dofactory.com/javascript/singleton-design-pattern
var Singleton = (function () {
    var instance;
 
    function createInstance() {
        var object = new Object("I am the instance");
        return object;
    }
 
    return {
        getInstance: function () {
            if (!instance) {
                instance = createInstance();
            }
            return instance;
        }
    };
})();
 
function run() {
 
    var instance1 = Singleton.getInstance();
    var instance2 = Singleton.getInstance();
 
    alert("Same instance? " + (instance1 === instance2));  
}


http://addyosmani.com/resources/essentialjsdesignpatterns/book/#singletonpatternjavascript
var mySingleton = (function () {
 
  // Instance stores a reference to the Singleton
  var instance;
 
  function init() {
 
    // Singleton
 
    // Private methods and variables
    function privateMethod(){
        console.log( "I am private" );
    }
 
    var privateVariable = "Im also private";
 
    var privateRandomNumber = Math.random();
 
    return {
 
      // Public methods and variables
      publicMethod: function () {
        console.log( "The public can see me!" );
      },
 
      publicProperty: "I am also public",
 
      getRandomNumber: function() {
        return privateRandomNumber;
      }
 
    };
 
  };
 
  return {
 
    // Get the Singleton instance if one exists
    // or create one if it doesn't
    getInstance: function () {
 
      if ( !instance ) {
        instance = init();
      }
 
      return instance;
    }
 
  };
 
})();
 
var myBadSingleton = (function () {
 
  // Instance stores a reference to the Singleton
  var instance;
 
  function init() {
 
    // Singleton
 
    var privateRandomNumber = Math.random();
 
    return {
 
      getRandomNumber: function() {
        return privateRandomNumber;
      }
 
    };
 
  };
 
  return {
 
    // Always create a new Singleton instance
    getInstance: function () {
 
      instance = init();
 
      return instance;
    }
 
  };
 
})();
 
 
// Usage:
 
var singleA = mySingleton.getInstance();
var singleB = mySingleton.getInstance();
console.log( singleA.getRandomNumber() === singleB.getRandomNumber() ); // true
 
var badSingleA = myBadSingleton.getInstance();
var badSingleB = myBadSingleton.getInstance();
console.log( badSingleA.getRandomNumber() !== badSingleB.getRandomNumber() ); // true
 
// Note: as we are working with random numbers, there is a
// mathematical possibility both numbers will be the same,
// however unlikely. The above example should otherwise still
// be valid.
分享到:
评论

相关推荐

    javascript单例模式的简单实现方法

    在了解javascript单例模式的简单实现方法之前,我们首先要弄清楚什么是单例模式。单例模式(Singleton Pattern)是一种设计模式,它规定了一个类只能创建一个实例,并提供一个全局访问点供外部获取该实例。这样的...

    前端大厂最新面试题-Singleton Pattern.docx

    Singleton Pattern单例模式详解 Singleton Pattern单例模式是一种创建型设计模式,提供了一种创建对象的最佳方式。该模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建在应用程序运行...

    基于JavaScript实现单例模式

    单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个...

    Example-TypeScript-Singleton-Pattern:TypeScript 和单例模式

    因此,这个单例模式同样适用于 JavaScript 开发环境。 7. **实际应用**: 单例模式常用于控制数据库连接、缓存管理、日志记录等场景,这些都需要在整个应用生命周期内只初始化一次。 8. **扩展阅读**: - **懒汉...

    Javascript实现单例模式

    在软件设计中,单例模式(Singleton Pattern)是一种常用的设计模式,它能够确保一个类只有一个实例,并提供一个全局访问点供外部获取这个实例。在JavaScript中实现单例模式相对简单,但又有一些特殊性,因为它是一...

    JavaScript 设计模式.pdf 高清下载

    ### 单例模式(Singleton Pattern) 单例模式确保一个类只有一个实例,并提供一个全局访问点。这对于控制对象创建非常有用,特别是在资源有限的环境中。例如,浏览器窗口中通常只需要一个全局配置对象,此时单例...

    pro javascript design patterns

    ### 单例模式(Singleton Pattern) 单例模式确保一个类只有一个实例,并提供一个全局访问点。在JavaScript中,通常通过闭包或构造函数结合私有化构造函数的方式实现。例如,使用闭包: ```javascript const ...

    SSP-simple-singleton-pattern:简单的单例模式

    简单的单例模式团队丹尼斯·卡拉赞斯莱昂纳多·派瓦鲁道夫·迪亚斯图利奥·菲利普 它是什么? Development > Organization > Good practices > Standards... SSP 是一种模块化和组织项目的简单方法。 将 OOP 的想法...

    JSDesignPattern:JavaScript设计模式测试代码

    JavaScript设计模式测试代码 已完成内容 Pattern Name Directory [JS基础] basic [常用算法] algorithm 单例模式 singleton 代理模式 proxy 迭代器模式 iterator 观察者模式 pubsub 命令模式 command 组合模式 ...

    Singleton_Pattern_[removed]使用 ES6 在 JavaScript 中实现单例类

    Singleton_Pattern_JavaScript使用 ES6 类在 JavaScript 中实现单例类。类名:ThemeSettings。 该类具有三个属性:颜色、字体和布局专业软件工程师单元 (PSEU) 培训的一部分

    Essential JavaScript Design Patterns

    ##### 单例模式(Singleton Pattern) 单例模式确保一个类只有一个实例,并提供一个全局访问点。这在管理应用程序的状态时非常有用,例如配置对象或日志记录器等。 ```javascript function Singleton() { if ...

    Javascript Design Patterns

    ### 单例模式(Singleton Pattern) 单例模式确保一个类只有一个实例,并提供一个全局访问点。在JavaScript中,这可以通过闭包或模块模式实现。例如,创建一个日志记录器单例: ```javascript const Logger = ...

    Pro.JavaScript.Design.Patterns.RETAiL.Dec.2007

    4. 设计模式的实现:书中将会涉及工厂模式(factory)、单例模式(singleton)、观察者模式(observer)、组合模式(composite)和外观模式(facade)等常用的设计模式,并展示如何在JavaScript中轻松理解并实现这些...

    JavaScript.Design.Patterns

    2. **单例模式(Singleton Pattern)**: - **定义**:确保一个类只有一个实例,并提供一个全局访问点。 - **应用场景**:适用于需要频繁创建和销毁的对象,比如数据库连接池、日志对象等。 3. **装饰者模式...

    Apress Pro JavaScript Design Patterns Ebook With Source Code

    2. **创建型设计模式**:如工厂模式(Factory)、抽象工厂模式(Abstract Factory)、单例模式(Singleton)、建造者模式(Builder)和原型模式(Prototype)。这些模式关注于对象的创建,使得代码更易于管理,同时...

    JavaScript.Patterns

    ##### 4.1 单例模式(Singleton Pattern) 单例模式是确保一个类只有一个实例,并提供一个全局访问点。这种模式在创建数据库连接池或管理配置信息等场景中非常有用。在JavaScript中,可以通过闭包或者构造函数配合...

    Pro.JavaScript.Design.Patterns.rar

    1. **创建型模式**:包括单例(Singleton)、工厂方法(Factory Method)和建造者(Builder)等。这些模式关注对象的创建过程,帮助控制实例化,减少代码间的耦合。 2. **结构型模式**:如适配器(Adapter)、装饰...

Global site tag (gtag.js) - Google Analytics