問題描述:
單例模式 Singleton Pattern
問題解決:
(1)單例模式簡介:
Singleton模式要求一個類有且僅有一個實例,并且提供了一個全局的訪問點。這就提出了一個問題:如何繞過常規的構造器,提供一種機制來保證一個類只有一個實例?客戶程序在調用某一個類時,它是不會考慮這個類是否只能有一個實例等問題的,所以,這應該是類設計者的責任,而不是類使用者的責任。
單例模式特點:
(1.1)一個類有且僅有一個實例
(1.2)類提供一個全局的訪問點
(2)單例模式的實現:
(2.1)簡單實現:

上述實現的優點:
(1)直到對象要求時,才進行實例的初始化,這種實現方法稱為:“惰性實例化”,惰性實例化,避免了程序啟動時創建不必要的Singleton。
上述實現的缺點:
(1)這種實現對于多線程環境并不安全,可能實例化多個對象,例如可能存在兩個線程進行instance==null的判斷,然后創建兩個單例對象,這就違背了單例模式的設計意圖。
(2.2)安全的線程:

以上的實現保證了單例對象在多線程的情況下只會創建一個,但是padlock增加了額外的開銷
(2.3)雙重鎖定
新聞熱點
疑難解答
圖片精選