在面向对象语言中,调用一个类的方法之前,必须先将这个类实例化,才能调用类方法。
单例模式能使得我们不需要每次都需要实例化一次,因为我们使用的对象都是同一个对象。
单例模式:只允许实例化一次的对象类。
Leader返回一个包含getInstance方法的对象,执行这个方法可以获得_module的实例。
eader_01与leader_02完全相等,说明它们是同一个对象,并不是通过new新获取的对象。
但是在多页面情况下,通过import引入的并不是单例模式,因为
模态框弹窗的时候,不希望有两个弹窗
1、什么是单例模式?
保证一个类只有一个实例, 并提供一个访问它的全局访问点。
2、如何实现一个单例模式
实现一个简单的单例模式:
创建一个类,类中有一个方法能够创建该类的实例对象,还有一个标记,记录是否创建过实例对象。创建过则直接用实例对象的引用。否则再次创建
3、什么情况可以使用单例模式(有什么用处)
(1)缓存数据(点击触发获取实验字段时)
(2)获取实例值不确定使用位置获取实例时是否已经有实例。每次调用都走一遍内部逻辑获取实例
使用场景:
Rn
h5页面中同一个路由下写在最上层时
每一个import进来的组件其实都属于一个单例模式
将变量缓存再windows上也是一个单例模式、但windows随意挂载变量的话后续不好维护
NodeJS的模块默认情况下是单例性质的,不过其并不能保证如我们编程时设想的那样一定是单例,根据NodeJS的官方文档中描述,某个模块导入是否为单例受以下两个因素的影响:Node 模块的缓存机制是大小写敏感的,譬如如果你 require('/foo') 与 require('/FOO')会返回两个不同的对象,尽管你的foo与FOO是完全相同的文件。
模块是基于其被解析得到的文件名进行缓存的,鉴于不同的模块会依赖于其被调用的路径进行缓存鉴别,因此并不能保证你使用 require('foo') 会永远返回相同的对象,可能会根据不同的文件路径得到不同的对象。