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;
    }
    }
    })();
    
  • 相关阅读:
    NUC_TeamTEST_C && POJ2299(只有归并)
    BestCoder#15 A-LOVE(暴力)
    NUC_TeamTEST_B(贪心)
    2014-2015 ACM-ICPC, NEERC, Southern Subregional Contest (Online Mirror, ACM-ICPC Rules, Teams Preferred)
    CodeForces#275--DIV 2--A
    uva-1339Ancient Cipher
    uva748
    uva-465(overflow)
    uva10106(大数乘法)
    424
  • 原文地址:https://www.cnblogs.com/xiaoqi/p/1755056.html
Copyright © 2011-2022 走看看