學習日記之單例模式和Effective C

2021-09-06 20:37:11 字數 917 閱讀 4369

單例模式(singleton):保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。

(1),通常我們能夠讓乙個全域性變數使得乙個物件被訪問,但它不能防止你例項化多個物件。乙個最好的辦法就是,讓類自身負責儲存它的唯一例項。這個類能夠保證沒有其它例項被建立,而且它能夠提供乙個訪問該例項的方法。

(2),lock 是確保當乙個執行緒位於**的臨界區時,還有乙個執行緒不進入臨界區。假設其它執行緒試圖進入鎖定的**,則它將一直等待,知道該物件被釋放。

(3),雙重鎖定解決效率問題。

(4),c#與公共語言執行庫也提供了一種「靜態初始化」方法,這樣的方法不須要開發者顯示地編寫執行緒安全**,就可以解決多執行緒環境下它是不安全地問題。

(5),這樣的靜態初始化的方式是在自己被載入時就將自己例項化,所以被形象的稱謂餓漢式單例類,假設在第一次被引用時,才會將自己例項化,被稱謂懶漢式單例類。

effective c++:

1:絕不又一次定義繼承而來的預設引數值

(1),絕對不要又一次定義乙個繼承而來的預設引數值,由於預設引數值都是靜態繫結,而 virtual 函式式動態繫結的。

2:通過復合塑模出 has-a 或「依據某物實現出」

(1),復合(compositon)的意義和 public 繼承全然不同。

3:明智而審慎地使用 private 繼承

(1),private 繼承意味著 is-implemented-in-terms-of (依據某物實現出)。它通常比復合(composition)的級別低。可是當 derived class 須要訪問 protected base class 的成員,或須要又一次定義繼承而來的 virtual 函式時,這麼設計是合理的。

(2),和復合(composition)不同, private 繼承能夠造成 empty base 最優化。這對致力於「物件尺寸最小化」的程式庫開發人員來說,可能非常重要。

自學日記 設計模式 單例模式

單例模式是指在整個程式執行期間,保證某個類只有乙個例項化物件,因此構造方法肯定是私有的,因為外部是無法new出來物件的,所以獲取類的方法必須是靜態的。常見的引用場景包括 程式配置類,使用程式在啟動的時候只需要配置一次。也可以理解成程式在啟動的時候需要載入的一些東西,一些準備工作。連線池 執行緒池等物...

設計模式之單例模式學習

單例模式是一種物件建立型模式,使用單例模式可以保證乙個類只生成唯一的例項物件。也就是說,在整個程式空間中,該類只存在乙個例項物件。gof對單例模式的定義是 保證乙個類 只有乙個例項存在,同時提供能對該例項加以訪問的全域性訪問方法。在應用系統開發中,我們常常有以下需求 單例模式有二種實現方式,餓漢式和...

單例模式 之 單例模式 Holder

之前我寫過 單例模式中的餓漢模式和懶漢模式 他們雖然都能實現單例模式 但是優缺點很明顯 餓漢模式 不能懶載入 類載入就會被例項化 消耗很大,在併發情況下安全性很高。懶漢模式 能實現懶載入,但是在併發情況下安全性不是很高。雖然一步一步的優化,安全性得到了保證,但是卻使用了synchronized 對效...