脚本宝典收集整理的这篇文章主要介绍了浅谈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,请注明来意。