浅谈js单例模式

发布时间:2019-11-19 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了浅谈js单例模式脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

java单例模式

说到单例设计模式,Java中经常使用
java的单例模式通常分两种,懒汉模式和饿汉模式

懒汉模式

class singleDemo {     PRivate static demoTarget;     privete singleDemo () {};     public static singleDemo getInstance (data) {         if (demoTarget === null) {            demoTarget = new singleDemo()         }         return demoTarget     } }

OK,简单写了下
1.私有化构造函数
2.在public获取实例的方法中返回实例化对象

(虽然很多大佬都写过啦,但是小生为了加深记忆便再写一遍)
虽然实现了单例模式,但是未考虑到线程安全,多个线程访问能可能创建多个实例,也就是高并发时候单例模式会创建多个实例,那要如何解决此类问题呢?
这时候有两种,一种是原来的懒汉模式借助synchronized变身成为线程安全的懒汉模式,另一种则是饿汉模式

懒汉模式 (线程安全)

class singleDemo {     private static demoTarget;     privete singleDemo () {};     public static synchronized singleDemo  getInstance (data) {         if (demoTarget === null) {             demoTarget= new singleDemo()         }         return demoTarget     } }

饿汉模式

什么是饿汉模式呢?就是在懒汉模式的基础加一层锁,能保证单例

class singleDemo {     private static demoTarget = new singleDemo();     private singleDemo () {};     public static singleDemo getInstance (data) {         return demoTarget     } }

好啦,简单的把java常用的两种单例模式给写了下,???标题不是js的单例模式嘛?标题写错了?没写错,小生只是回忆一下java的知识,望各位大佬见谅
在js中如何实现单例呢?

@H_304_163@js单例模式

由于js都是单线程的,所以并不像java那样麻烦,并不需要考虑多线程情况,没错,只要能获取单例就行,废话不说,代码先上

let Single = (function () {         function constructor () {}         VAR instance;         function getInstance(){             if (!instance) {                 instance = new constructor()             }             return instance         }         return {             getInstance: getInstance         }     })()     const demo1 = Single.getInstance()     const demo2 = Single.getInstance()     console.LOG(demo1 === demo2) // true  

脚本宝典总结

以上是脚本宝典为你收集整理的浅谈js单例模式全部内容,希望文章能够帮你解决浅谈js单例模式所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。