资讯专栏INFORMATION COLUMN

JS 设计模式 四(单例)

1fe1se / 1915人阅读

摘要:所以使用单例会更好的控制全局变量。懒加载单例模式多数都是在加载脚本的时候被创建出来。不过对于一些使用方式单例适合在用到的时候被加载,所以需要一个可以懒加载的单例。

单例

单例是一个全局变量,使用单例可以更好的控制全局变量,还可以利用分支技术来封装浏览器之间的差异。网页中使用全局变量由于可以被重写风险很大。所以使用单例会更好的控制全局变量。

懒加载

单例模式多数都是在加载脚本的时候被创建出来。不过对于一些使用方式单例适合在用到的时候被加载,所以需要一个可以懒加载的单例。

分支

是一种区分运行环境差异的技术,更加有效的针对加载的环境来定制代码,达到更好的灵活性。

代码
var os = require("os");
Singleton = (function () {
  var uniqueInstance; // 单例实体
  constructor = function () { // 单例初始化
    return function Singleton () {
      var count = 10;
      function initCount(){
        count = 10;
      }
      this.getCount = function () {
        return count;
      }
      this.setCount = function (value) {
        count = value;
      };
      this.init=function(){
        initCount();
      }
    };
  }();

  return {
    getInstance: function () {
      if (!uniqueInstance) { // 判断是否初始化过
        uniqueInstance = new constructor();
      }
      return  (os.type()==="Windows_NT")?uniqueInstance:undefined;//单例分支使单例有更高的兼容性
    }
  }
})();
var S=Singleton .getInstance();//懒加载,在这里开始加载和创建实例。
console.log(S.count);
console.log(S.getCount());
S.setCount(550);
console.log(S.getCount());
//S.initCount();
S.init();
console.log(S.getCount());
总结

单例主要在于代码的整洁性,是全局变量变得可控,使用懒加载可以减少不必要的内存消耗。分支提高不用环境的兼容性,只需判断一次环境而不用在每次使用都判断环境。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/87758.html

相关文章

  • PHP设计模式单例模式(Singleton)

    摘要:一什么是单例设计模式单例模式,也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。 一、什么是单例设计模式 单例模式,也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。 二、单例模式的技巧 利用$_instance私有变量来保存类的唯一实例化对象; 设计一个getInstance对外公开的函数,...

    余学文 评论0 收藏0
  • 常用设计模式

    摘要:工厂设计模式工厂设计模式,主要用于进行实例化对象时的解耦操作,避免使用关键字实例化对象,通过反射,根据类名称动态创建对象示例静态工厂模式构造方法私有化获取指定类名称的对象动态代理模式动态代理模式,主要用于对同一接口子类的相同逻辑进行代理操作 工厂设计模式 工厂设计模式,主要用于进行实例化对象时的解耦操作,避免使用new关键字实例化对象,通过反射,根据类名称动态创建对象 示例: pa...

    fizz 评论0 收藏0
  • JS或Jquery

    摘要:大潮来袭前端开发能做些什么去年谷歌和火狐针对提出了的标准,顾名思义,即的体验方式,我们可以戴着头显享受沉浸式的网页,新的标准让我们可以使用语言来开发。 VR 大潮来袭 --- 前端开发能做些什么 去年谷歌和火狐针对 WebVR 提出了 WebVR API 的标准,顾名思义,WebVR 即 web + VR 的体验方式,我们可以戴着头显享受沉浸式的网页,新的 API 标准让我们可以使用 ...

    CatalpaFlat 评论0 收藏0
  • 理解php单例模式

    摘要:二为什么用单例实际项目中像数据库查询,日志输出,全局回调,统一校验等模块。单例模式的好处减少频繁创建,节省了。因此在单例模式必须包含三要素私有化构造函数,私有化。 单例作为一个最经典的设计模式之一,到底什么是单例?为什么要用单例?怎么设计单例?php中单例如何具体实现? 一、什么是单例 wiki百科:单例模式,也叫单子模式,是一种常用的软件设计模式。 在应用这个模式时,单例对象的类必须...

    xi4oh4o 评论0 收藏0
  • 设计模式(1)单例模式

    摘要:既能保证延迟加载,又能保证线程安全枚举上面的四种方案都有两个弊端需要额外的工作进行序列化,否则每次反序列化的结果都是一个新的实例可通过反射机制强行调用私有构造器实现创建多个对象而这种方案完美的解决了上述两种问题 一.什么是单例模式? 单例是指在程序中某个类只能有一个实例,一些管理器和控制器常被设计成单例模式(如Spring容器的bean实例默认都是单例模式存在的) 二.单例有什么好处?...

    zhichangterry 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<