1.餓漢式單例模式
/**
* classname:hungerysingleton
* description:餓漢式單例模式
* author:ymj
* date:2020-07-10 21:55
* version:v1.0
*/public class hungerysingleton
public static hungerysingleton getinstance()
//特點:天生執行緒安全,類初始化時就建立物件,浪費記憶體,當由於浪費的記憶體資源小到可忽略不計,因此大多數場景下實用且方便
}
2.懶漢式單例模式
/**
* classname:lazysingleton
* description:懶漢式單例模式
* author:ymj
* date:2020-07-10 22:21
* version:v1.0
*/public class lazysingleton
//synchronized是為了保證多執行緒下同一時間下始終只有乙個執行緒進入執行
public synchronized static lazysingleton getinstance()
return lazysingleton;
}/**特點:類初始化時不會例項化物件,只有在第一次用到時會例項化
* 效能較差:原因是除了第一次用到會例項化,而之後的都是獲取,但由於synchronized的存在,後續的多執行緒獲取也只能單執行緒獲取
*/}
3.雙重校驗鎖式單例模式(synchronized鎖和volatile鎖)
/**
* classname:doublechecklocksingleton
* description:雙重校驗鎖單例模式
* author:ymj
* date:2020-07-10 22:51
* version:v1.0
*/public class doublechecklocksingleton
public doublechecklocksingleton getinstance()}}
return doublechecklocksingleton;
}/**特點:
*效能高:多執行緒下,第一次建立例項後,後續執行緒都不用走同步**塊,而是直接返回之前建立的例項
*缺點:寫法複雜
*/}
4.列舉單例模式
/**
* classname:enumsingleton
* description:列舉單例模式
* author:ymj
* date:2020-07-10 23:24
* version:v1.0
*/public class enumsingleton
static enum enumclass
public enumsingleton getinstance()
}public enumsingleton getinstance()
//特點:防止反射攻擊和反序列化攻擊 缺點:寫法略微複雜
}
Java單例模式的各種寫法和最優寫法推薦
話不多說,直接上 1 只適合單執行緒環境,懶漢模式 classsingletonpublic staticsingleton getinstance returninstance 評價 由於只生成乙個例項,為防止別人建立該類例項,構造方法為私有屬性,只有在例項物件為空時才去建立 為避免重複建立 餓漢...
Java單例模式的各種寫法和最優寫法推薦
話不多說,直接上 1.懶漢模式 只適合單執行緒環境,在需要的時候才去建立物件例項 時間換空間 優點 在不要物件例項的時候,節省了記憶體空間。缺點 在使用的時候會先判斷是否為空,為空的話,才去建立物件。所以獲取物件例項相對較慢。class singleton public static singlet...
單例模式寫法
單例模式是最常用到的設計模式之一,熟悉設計模式的朋友對單例模式都不會陌生。一般介紹單例模式的書籍都會提到餓漢式和懶漢式這兩種實現方式。但是除了這兩種方式,本文還會介紹其他幾種實現單例的方式,讓我們來一起看看吧。單例模式是一種常用的軟體設計模式,其定義是單例物件的類只能允許乙個例項存在。許多時候整個系...