天天看點

設計模式-單例模式

一個對象隻能有一個執行個體,所有對象對它的引用都指向同一個記憶體位址

1. 懶漢式加載

2. 餓漢式加載

減少記憶體開支,因為隻有一個對象執行個體,特别是一個對象頻繁的建立和銷毀時

減少系統的性能開銷,當一個對象的産生需要比較多的資源時

單例模式可以避免對資源的多重占用,比如寫檔案操作

單例模式可以在系統設定全文通路點,優化和共享資源通路,例如由一個單例類去負責一個資料表的映射處理

單例模式一般沒有接口,擴充比較麻煩,接口對單例模式是沒有意義的,它要提供單一執行個體,而接口和抽象類是不能被執行個體化的.當然,在特殊情況下也可以實作,

    這個看具體的環境而定

單例模式不利于測試,在并行開發環境中,單例模式沒有完成,沒法進行測試

單例模式與單一職責原則有沖突.一個類應該隻實作一個邏輯,而不關心它是否是單例的

要求生成唯一序列号的環境

在整個項目中需要一個共享通路點或共享資料

建立一個對象消耗的資源過多時,比如通路 IO 和資料庫

需要定義大量的靜态常量和靜态方法(這裡我其實沒太搞懂靜态方法和單例的差別在哪)