single java_java single Pattern 单例模式
單例模式是 Java 中最簡單的設(shè)計(jì)模式之一。這種類型的設(shè)計(jì)模式屬于創(chuàng)建型模式,它涉及到一個(gè)單一的類,該類自己負(fù)責(zé)創(chuàng)建自己的對(duì)象并且確保只有單個(gè)對(duì)象被創(chuàng)建。
這個(gè)類提供了一種訪問其唯一的對(duì)象的方式,可以直接訪問,不需要實(shí)例化該類的對(duì)象。
單例模式創(chuàng)建兩種方式
1.餓漢模式
這種方式是最基本的實(shí)現(xiàn)方式,這種實(shí)現(xiàn)最大的問題就是不支持多線程。因?yàn)闆]有加鎖 synchronized,所以嚴(yán)格意義上它并不算單例模式。
這種方式 lazy loading 很明顯,不要求線程安全,在多線程不能正常工作。
publicclassSingleton{
privatestaticSingletoninstance;
privateSingleton(){}
publicstaticSingletongetInstance(){
if(instance== null)
{
instance= newSingleton();
}
returninstance;
}
}
2.懶漢式,
它基于 classloader 機(jī)制避免了多線程的同步問題,不過,instance 在類裝載時(shí)就實(shí)例化,雖然導(dǎo)致類裝載的原因有很多種,在單例模式中大多數(shù)都是調(diào)用 getInstance 方法,
但是也不能確定有其他的方式(或者其他的靜態(tài)方法)導(dǎo)致類裝載,這時(shí)候初始化 instance 顯然沒有達(dá)到 lazy loading 的效果
publicclassSingleton{
privatestaticSingletoninstance= newSingleton();
privateSingleton(){
}
publicstaticSingletongetInstance(){
returninstance;
}
}
總結(jié)
以上是生活随笔為你收集整理的single java_java single Pattern 单例模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .net 5 正式版_ASP.NET C
- 下一篇: ltspice 双脉冲_焊烟脉冲布袋式除