單例模式的各種寫法

2021-10-07 23:50:19 字數 1670 閱讀 5863

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...

單例模式寫法

單例模式是最常用到的設計模式之一,熟悉設計模式的朋友對單例模式都不會陌生。一般介紹單例模式的書籍都會提到餓漢式和懶漢式這兩種實現方式。但是除了這兩種方式,本文還會介紹其他幾種實現單例的方式,讓我們來一起看看吧。單例模式是一種常用的軟體設計模式,其定義是單例物件的類只能允許乙個例項存在。許多時候整個系...