广告
返回顶部
首页 > 资讯 > 前端开发 > VUE >web前端中单例模式的示例分析
  • 424
分享到

web前端中单例模式的示例分析

2024-04-02 19:04:59 424人浏览 八月长安
摘要

小编给大家分享一下web前端中单例模式的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!单例模式(Singleton Pa

小编给大家分享一下web前端中单例模式的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

单例模式(Singleton Pattern)

顾名思义,单例模式中Class的实例个数最多为1。当需要一个对象去贯穿整个系统执行某些任务时,单例模式就派上了用场。而除此之外的场景尽量避免单例模式的使用,因为单例模式会引入全局状态,而一个健康的系统应该避免引入过多的全局状态。

实现单例模式需要解决以下几个问题:

  • 如何确定Class只有一个实例?

  • 如何简便的访问Class的唯一实例?

  • Class如何控制实例化的过程?

  • 如何将Class的实例个数限制为1?

我们一般通过实现以下两点来解决上述问题:

  • 隐藏Class的构造函数,避免多次实例化

  • 通过暴露一个 getInstance() 方法来创建/获取唯一实例

javascript中单例模式可以通过以下方式实现:

// 单例构造器const FooServiceSingleton = (function () {
  // 隐藏的Class的构造函数
  function FooService() {}

  // 未初始化的单例对象
  let fooService;

  return {
    // 创建/获取单例对象的函数
    getInstance: function () {
      if (!fooService) {
        fooService = new FooService();
      }
      return fooService;
    }
  }})();

实现的关键点有:

  1. 使用 IIFE创建局部作用域并即时执行;

  2. getInstance()为一个 闭包 ,使用闭包保存局部作用域中的单例对象并返回。

我们可以验证下单例对象是否创建成功:

const fooService1 = FooServiceSingleton.getInstance();
const fooService2 = FooServiceSingleton.getInstance();
console.log(fooService1 === fooService2); 
// true

场景例子

  • 定义命名空间和实现分支型方法

  • 登录框

  • Vuex 和 redux中的store

优点

  • 划分命名空间,减少全局变量

  • 增强模块性,把自己的代码组织在一个全局变量名下,放在单一位置,便于维护

  • 且只会实例化一次。简化了代码的调试和维护

缺点

  • 由于单例模式提供的是一种单点访问,所以它有可能导致模块间的强耦合

  • 从而不利于单元测试。无法单独测试一个调用了来自单例的方法的类,而只能把它与那个单例作为一

  • 个单元一起测试。

以上是“WEB前端中单例模式的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网VUE频道!

--结束END--

本文标题: web前端中单例模式的示例分析

本文链接: https://www.lsjlt.com/news/96211.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • web前端中单例模式的示例分析
    小编给大家分享一下web前端中单例模式的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!单例模式(Singleton Pa...
    99+
    2022-10-19
  • web前端中策略模式的示例分析
    这篇文章将为大家详细讲解有关web前端中策略模式的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。策略模式(Strategy Pattern)策略模式简单描述就是:...
    99+
    2022-10-19
  • web前端中工厂模式的示例分析
    这篇文章主要介绍了web前端中工厂模式的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。工厂模式(Factory Pattern)工厂...
    99+
    2022-10-19
  • web前端中代理模式的示例分析
    这篇文章主要为大家展示了“web前端中代理模式的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“web前端中代理模式的示例分析”这篇文章吧。代理模式(Pr...
    99+
    2022-10-19
  • web前端外观模式的示例分析
    这篇文章给大家分享的是有关web前端外观模式的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。外观模式(Facade Pattern)外观模式是最常见的设计模式之一,它为子...
    99+
    2022-10-19
  • web前端中中介者模式的示例分析
    这篇文章将为大家详细讲解有关web前端中中介者模式的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。中介者模式(Mediator Pattern)在中介者模式中,中...
    99+
    2022-10-19
  • web前端中观察者模式的示例分析
    这篇文章给大家分享的是有关web前端中观察者模式的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。观察者模式(Observer Pattern)观察者模式又称发布-订阅模式...
    99+
    2022-10-19
  • web前端中迭代器模式的示例分析
    这篇文章将为大家详细讲解有关web前端中迭代器模式的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。迭代器模式(Iterator Pattern)如果你看到这,ES...
    99+
    2022-10-19
  • web前端中访问者模式的示例分析
    这篇文章将为大家详细讲解有关web前端中访问者模式的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。访问者模式(Visitor Pattern)访问者模式 ...
    99+
    2022-10-19
  • WEB前端跨域的示例分析
    这篇文章主要为大家展示了“WEB前端跨域的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“WEB前端跨域的示例分析”这篇文章吧。 ...
    99+
    2022-10-19
  • PHP中单例模式的示例分析
    这篇文章将为大家详细讲解有关PHP中单例模式的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、什么是单例模式?含义     作为对象的创建模式,单例模式确保某一个类...
    99+
    2023-06-20
  • java单例模式的示例分析
    这篇文章主要介绍了java单例模式的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。定义:      &nb...
    99+
    2023-05-30
    java
  • C#单例模式的示例分析
    这篇文章给大家分享的是有关C#单例模式的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。单例模式也是创建型模式的一种,也是23种设计模式中比较简单的一种。见名思意,在整个软件系统中,只有某个类型的一个对象,...
    99+
    2023-06-29
  • web前端实例分析
    这篇文章主要介绍了web前端实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇web前端实例分析文章都会有所收获,下面我们一起来看看吧。正文这题的规则是这样的给定有一个 Add 函数,要...
    99+
    2023-06-27
  • Web前端开发css基础样式的示例分析
    小编给大家分享一下Web前端开发css基础样式的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!颜色和单位的使用 颜色用颜...
    99+
    2022-10-19
  • web前端开发规范的示例分析
    小编给大家分享一下web前端开发规范的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!规范说明此为前端开发团队遵循和约定的...
    99+
    2022-10-19
  • web前端知识体系的示例分析
    小编给大家分享一下web前端知识体系的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在看内容之前,先看一下这个知识框架的...
    99+
    2022-10-19
  • Css前端的示例分析
    这篇文章将为大家详细讲解有关Css前端的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、移动端移动端还没有上车。先来总结一下三个基本的移动端开发特性:视口(vi...
    99+
    2022-10-19
  • 前后端分离之VueJS前端的示例分析
    这篇文章给大家分享的是有关前后端分离之VueJS前端的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前言前端用什么框架都可以,这里选择小巧的vuejs。要实现的功能很简单...
    99+
    2022-10-19
  • JS前端模块化规范的示例分析
    这篇文章将为大家详细讲解有关JS前端模块化规范的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Script 标签其实最原始的 JavaScript 文件加载方式,...
    99+
    2022-10-19
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作