好顺佳集团
2022-09-24 12:04:31
3789
内容摘要:为什么叫学士模式?1、一个单例类只能有一个实例。2.单例类必须自己创建自己的唯一实例。3.单例类必须将此实例提供给所有其他对象。看?自给自足。俗话说:“小富靠勤,中富靠德,大富靠命”。也有...
为什么叫学士模式?
1、一个单例类只能有一个实例。 2. 单例类必须自己创建自己的唯一实例。 3. 单例类必须将此实例提供给所有其他对象。
看?自给自足。
俗话说:“小富靠勤,中富靠德,大富靠命”。也有懒惰和勤奋的单身汉。
1.懒惰模式(懒加载)
懒加载是指调用get()方法时创建实例(对象不急,需要的时候会为你创建。不急,也叫“懒人模式” "),常见的实现方式是在get方法中实例化new。 .
通俗理解:火车上该吃晚饭了,懒汉正按喇叭喊:谁要吃,大盘鸡,热干面,黄瓜皮蛋。如果你想吃,来找我说哈,我给你一个新的。现在吃,热一下。
“懒汉”的优缺点:
优点:实现起来比较简单。加载类 SingletonTest 时,不会创建静态变量 static 的实例并分配内存空间。当第一次调用getInstance方法时,实例变量被初始化并分配了内存,所以在一定条件下可以节省内存。
缺点:在多线程环境下,懒人根本搞不定,单例的状态根本无法保证。
2.饥饿模式(立即加载)
立即加载是指在使用类的时候已经创建了对象(不管以后会不会使用实例化的对象,都会先创建。看起来很着急。,所以也叫“饥饿人模式” ),常见的实现方式是直接实例化new。
通俗理解:还在火车上,饥饿的人喊道:啤酒、饮料、矿泉水、花生瓜子八宝粥。来吧,把你的腿抬起来。想吃热干面?我有,完成了。马上开吃!
《饥饿的人》的优缺点:
优点:实现简单,不存在多线程同步问题。
失踪要点:占用空间,推车就是那么大。当类 SingletonTest 被加载时,静态实例被初始化,静态变量被创建,内存空间被分配。从那时起,静态实例对象一直占用这块内存(即使你没有使用实例),当类卸载时,静态变量被销毁,占用的内存被释放,所以在一定条件下会消耗内存。
3.线程安全的懒惰模式
优点:在多线程的情况下,保证了“懒惰模式”的线程安全。
缺点:众所周知,在多线程的情况下,同步方法通常效率低下,显然这不是最好的实现。
双重检查锁定机制(DCL:双重检查锁定)
这是实现单例模式的方式。高内存使用、高效率、线程安全、多线程操作的原子性。
参考文档:
上一篇:公司没收押金如何做账
下一篇:公司内部食堂怎么做账处理
张总监 13826528954
限时领取创业礼包
所有服务
您的申请我们已经收到!
专属顾问会尽快与您联系,请保持电话畅通!