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;
    }
    }
    })();
    
  • 相关阅读:
    android: 在fragment中添加actionbar, menu
    Android Context
    Android 在fragment中使用tabhost
    Android 菜单
    centos8 防火墙
    DHCP 原理
    阿里云服务器 linux下载 jdk
    java long值转成时间格式
    Window 中杀死指定端口 cmd 命令行 taskkill
    redis 安装
  • 原文地址:https://www.cnblogs.com/xiaoqi/p/1755056.html
Copyright © 2011-2022 走看看