美文网首页
JavaScript设计模式——单例模式

JavaScript设计模式——单例模式

作者: 你看到我的小熊了吗 | 来源:发表于2019-10-18 21:57 被阅读0次

孤单是一个人的狂欢——单例模式

喧嚣的夜晚,肆无忌惮的人群,一切都让人纸醉金迷。越是这个时候,坐在角落的自己越显得孤单,像极了单例模式。
咳咳咳,扯远了。

单例模式:又被称为单体模式,只允许实例化一次的对象类。即便多次实例化该类,返回的仍是第一次实例化后的对象。

简单的单例模式

不要被单例模式这几个字给唬住了,毛主席教导我们:一切反动派都是纸老虎。通过最简单的单例模式,我们揭开纸老虎的面纱:

let singleton = {
    name: "单例模式",
    singleMethod: function () {}
}

这便是最简单的单例模式了,即字面量创建对象。我们通过其全局暴露的对象singleton,采用singleton.singleMethod()的方式调用其内部方法即可。

惰性单例

惰性单例也称之为:惰性创建。即在需要的时候才创建的对象实例。

字面量创建单例毕竟只适用于简单的应用场景,当我们需要创建复杂的单例时,还是需要采用构造函数的方式实例化对象。

let lazySingle = (function () {
      // 单例实例引用
      let _instance = null;
      // 单例
      function Single() {
        /* 这里定义私有属性和方法 */
        return {
          publicMethod: function () {},
          publicProperty: '1.0'
        }
      }

      // 获取单例对象接口
      return function () {
        // 如果为创建单例将创建单例
        if(!_instance) {
          _instance = Single();
        }

        // 返回单例
        return _instance;
      }
    })();

lazySingle实际上是一个函数,_instance为实例对象,初始值为nullinit是它的构造函数,用于实例化对象。立即执行函数返回的是匿名函数,用于判断实例是否创建,只有当调用lazySingle的时候实例化。
不在js加载时就进行实例化创建,而是在需要的时候,再进行单例的创建。如果,再次调用,则返回的是第一次实例化后的实例对象。

let instance1 = lazySingle();
let instance2 = lazySingle();
console.log(instance1 === instance2); //true

单例模式的应用

命名空间(namespace)

作为最优秀的前端框架之一的jQuery,就利用单例模式为它提供了一个命名空间:jQuery。当我们需要调用其中的方法时,只需使用jQuery.xxx的方式,即可。
那么在多人合作的项目里,难免会碰到相同的命名方法,我们只需使用单例模式为其提供不同的命名空间,便不会出现代码、命名冲突的问题。

模块分明

简单的说,就是将一类模块,归置到同一个模块下面。

let module = (function(){
  //dom模块
  let dom = {
    addClass: function() {},
    getElementById: function() {}
  }
  
  //event模块
  let events = {
    preventDefault: function() {},
    stopPropagation: function() {}
  }

  return {
    dom: dom,
    event: events
  }
})()

写在最后

最近突然能闲下心来,静静地看一些东西。还是希望自己能心平气和的去看待一些东西,接受一些东西,更好地成长,更好的奋斗吧。

相关文章

  • Node.js与单例模式

    1、前端的JavaScript单例模式 单例模式是非常常用的设计模式,前端的JavaScript中单例模式代码可能...

  • JavaScript 设计模式(上)——基础知识

    系列链接 JavaScript 设计模式(上)——基础知识 JavaScript 设计模式(中)——1.单例模式 ...

  • JavaScript设计模式二(单例模式)

    JavaScript设计模式二(单例模式) 这边文章主要是JavaScript中的单例模式定义: 保证一个类仅有一...

  • 单例模式Java篇

    单例设计模式- 饿汉式 单例设计模式 - 懒汉式 单例设计模式 - 懒汉式 - 多线程并发 单例设计模式 - 懒汉...

  • python中OOP的单例

    目录 单例设计模式 __new__ 方法 Python 中的单例 01. 单例设计模式 设计模式设计模式 是 前人...

  • 单例

    目标 单例设计模式 __new__ 方法 Python 中的单例 01. 单例设计模式 设计模式设计模式 是 前人...

  • 设计模式 - 单例模式

    设计模式 - 单例模式 什么是单例模式 单例模式属于创建型模式,是设计模式中比较简单的模式。在单例模式中,单一的类...

  • 前端开发工程师必备系列-几个简单的JS单例模式

    前端开发工程师必备系列-几个简单的JS单例模式 JavaScript单例模式 1. 单例模式 单例模式(Singl...

  • 设计模式

    常用的设计模式有,单例设计模式、观察者设计模式、工厂设计模式、装饰设计模式、代理设计模式,模板设计模式等等。 单例...

  • 2018-04-08php实战设计模式

    一、单例模式 单例模式是最经典的设计模式之一,到底什么是单例?单例模式适用场景是什么?单例模式如何设计?php中单...

网友评论

      本文标题:JavaScript设计模式——单例模式

      本文链接:https://www.haomeiwen.com/subject/wlwwmctx.html