zoukankan      html  css  js  c++  java
  • Singleton 模式

    简述

    在JavaScript中,Singleton充当共享资源命名空间,从全局命名空间中隔离出代码实现,从而
    为函数提供单一访问点。

    如下实现一个Singleton

    var mySingleton=(function(){
      //实例保持了Singleton的引用
      var instance;
      function init(){
        //Singleton
        //私有方法和变量
        function privateMethod(){
            console.log("I am a private");
        }
        var privateVariable="I am also a private";
        var privateRandomNumber=Math.random();
        return{
          //公有方法和变量
          publicMethod:function(){
            console.log("The public can see me");
          },
          publicProperty:"I am also a public",
          getRandomNumber:function(){
            return privateRandomNumber;
          }
        };
      };
      return{
        //获取Singletond的实例,如果存在就返回,不存在就创建新实例
        getInstance:function(){
          if (!instance){
            instance=init();
          }
          return instance;
        }
      };
    })();
    
      var myBadSingleton=(function(){
      //实例保持了一个引用
      var instance;
      function init(){
        //Singleton
        var privateRandomNumber=Math.random();
        return{
          getRandomNumber:function(){
            return privateRandomNumber;
          }
        };
      };
      return{
        //每次都创建新实例
        getInstance:function(){
          instance=init();
          return instance;
        }
      };
    })();
    
      var singleA=mySingleton.getInstance();
      var singleB=mySingleton.getInstance();
      console.log(singleA.getRandomNumber()===singleB.getRandomNumber());//true
    
      var badSingletonA=myBadSingleton.getInstance();
      var badSingletonB=myBadSingleton.getInstance();
      console.log(badSingletonA.getRandomNumber!==badSingletonB.getRandomNumber);//ture
    
  • 相关阅读:
    今天光棍节,有新发现
    订购了一台Wp7,来测试一下让程序跑在wp7上吧
    3D场景编辑器 0.1
    新进展
    XXX(脏话)的腾讯,敢给我解释一下么?
    扣扣起司,架构设计(重复造轮子了,发现了MSNLite)
    关于WP7开发,随笔
    关于content管道,让我们继续
    微软,还我Input.Touch模块
    为什么要抛弃content
  • 原文地址:https://www.cnblogs.com/luwei-s/p/5251195.html
Copyright © 2011-2022 走看看