單例模式(Single Pattern)

2021-07-07 08:18:05 字數 820 閱讀 2787

public class singleton

//通過該方法獲得例項物件

public static singieton getsingieton()

//類中其他方法,盡量是static

public static void dosomething()

}

由於單利模式在記憶體中只有乙個例項減少了記憶體開支,特別是乙個物件需要頻繁的建立,銷毀時,而且建立或銷毀時效能有無法優化,單利模式的優勢就是非常非常明顯。

由於單例模式只生成乙個例項,所以減少了系統的開銷,當乙個物件的產生需要比較多的資源時,如讀取配置,闡釋其他依賴物件時,則可以通過應用啟動時直接產生乙個單例物件,然後用永久主流記憶體的方式來解決。

單例模式可以避免對資源的多重占用,例如乙個寫檔案動作,由於只有乙個例項存在記憶體中,避免對同乙個資源檔案的同時寫操作。

單例模式可以在系統設定全域性的訪問點,優化共享資源訪問,例如可以設計乙個單例類,負責所有資料表的對映處理。

單例模式一般沒有介面,擴充套件困難,若要擴充套件,除了修改**基本上沒有第二種途徑可以實現。單例模式為什麼不能增加介面?因為介面對單例模式是沒有任何意義的,單例模式要求「自行例項化」,並且提供單一例項,介面或者抽象類是不可能被例項化的。當然,在特殊情況下,單例模式可以實現介面、被繼承等,需要在系統開發中根據環境判斷。

單例模式對測試是不利的,在並行開發環境中,如果如果單例模式沒有完成,是不能進行測試的,沒有介面也不能使用mock的方式虛擬乙個物件。

單例模式與單一職責模式有衝突,乙個類應該只實現乙個邏輯,而不關心它是否是單例的,是不是要單例取決於環境,單例模式把「要單例」和業務邏輯融合在乙個類中。

單例模式 單例模式

餓漢式 急切例項化 public class eagersingleton 2.宣告靜態成員變數並賦初始值 類初始化的時候靜態變數就被載入,因此叫做餓漢式 public static eagersingleton eagersingleton new eagersingleton 3.對外暴露公共的...

單例 單例模式

簡單的實現乙個單例 instancetype sharedinstance return instance 真正的單例模式 myclass sharedinstance return instance id allocwithzone nszone zone return nil id copywi...

單例模式 懶漢式單例模式

單例模式有餓漢時模式和懶漢式 單例模式也就是說同一類只返回乙個物件供外部類使用 懶漢式即延遲初始化單例。在多執行緒環境下,簡單的懶漢式會有執行緒安全。懶漢式單例模式解決線性安全問題如下 1 使用雙重檢查鎖機制解決執行緒安全問題。2 單例模式還有更好的解決方案,即使用靜態類方式。懶漢式單例模式典型 p...