1. 程式人生 > >scala:分別使用懶漢式和餓漢式實現單例模式

scala:分別使用懶漢式和餓漢式實現單例模式

# 在java中,單例模式需要滿足以下要求: - 構造方法私有化,使得本類之外的地方不能使用構造方法new出物件 - 提供私有==靜態屬性==,接收單例物件 - 公共的、==靜態的getInstance方法==,便於外界拿到單例物件 想了解Java單例模式的請轉到:[Java單例模式-懶漢式、惡漢式、靜態內部類、列舉以及執行緒安全問題](https://blog.csdn.net/DTFT_/article/details/105110094?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161418535516780271579961%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=161418535516780271579961&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_v1~rank_blog_v1-1-105110094.pc_v1_rank_blog_v1&utm_term=%E5%8D%95%E4%BE%8B&spm=1018.2226.3001.4450) # 在scala中 - 主構造方法私有化,即類名後面加上`private`修飾 - 使用類的伴生物件達到Java中的static效果,伴生物件只會載入一次 ```scala /** * Desc: SCALA單例設計模式 * -懶漢式 * -餓漢式 */ object Scala16_TestSingleton { def main(args: Array[String]): Unit = { val std1: Student16 = Student16.getInstance() println(std1)//std1和std2輸出的地址一樣 val std2: Student16 = Student16.getInstance() println(std2) } } //懶漢式 object Student16{ private var s:Student16 = null def getInstance():Student16={ if(s == null){ s = new Student16 } s } } //餓漢式 object Student16{ private var s:Student16 = new Student16 def getInstance():Student16={ s } } //主構造方法私有化 class Student16 private(