zoukankan      html  css  js  c++  java
  • JavaScript 中的单例模式 (singleton in Javascript)

    单例模式的基本结构:

    MyNamespace.Singleton = function() {
    return {};
    }();
    

    比如:

    MyNamespace.Singleton = (function() {
    return { // Public members.
    publicAttribute1: true,
    publicAttribute2: 10,
    publicMethod1: function() {
    ...
    },
    publicMethod2: function(args) {
    ...
    }
    };
    })();
    

    但是,上面的Singleton在代码一加载的时候就已经建立了,怎么延迟加载呢?想象C#里怎么实现单例的:)采用下面这种模式:

    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;
    }
    }
    })();
    
  • 相关阅读:
    Shell Sort 希尔排序
    Quick Sort 快速排序
    Merge Sort 归并排序
    Insertion Sort
    Bubble Sort
    dubbo的异常栈问题
    IoC 容器
    .Net Core集成RabbitMQ
    .NET CORE Skywalking的集成
    制造业的信息化之路
  • 原文地址:https://www.cnblogs.com/xiaoqi/p/1755056.html
Copyright © 2011-2022 走看看