前幾天c++老師提到在給我們講解知識的時候用到了單件模式的概念!
今天寫出來和大家分享分享!
言歸正傳!
題目是這樣的:
建立乙個類,是這個類在其作用域內只能有乙個例項!
剛開始老師沒講的時候我也實現了這個功能,
我的方法是在類中宣告乙個靜態資料成員(整型),
在類的建構函式裡做點手腳!
我是在建構函式裡檢測一下靜態資料成員的值是不是0(初始是0),如果不是0,就直接exit;
第一次建立物件,它的值是0,建立之後就對靜態資料成員自加,
這樣子就變成1了,下次再建立新物件的時候因為靜態資料成員不是0,所以物件不會被建立!
但是我的這個方法缺點很明顯,因為實在執行的時候進行判斷的,如果使用者建立的兩個物件那麼程式就直接退出了!顯然大家不想出現這樣的情況!
後來老師給我們講解了他的方法,我聽得似懂非懂,聽到他提到了一嘴單件模式,所以我在課後就花了些時間查查資料,總算明白了大概了!
所謂單件模式就是在設計模式中的乙個概念,實現上面題目的要求!
它使用的方法:我用乙個例子來說明:
在這個類中我們把建構函式放在了private:中,這樣子我們在類外就無法直接來利用建構函式建立物件了,我們用在public:中定義了乙個個靜態函式,注意這裡面函式的返回值可是物件的引用,這一點很重要!而且一定要是靜態函式(因為我們無法建立物件,所以只能通過類名::+函式()的形式來呼叫),
如此一來我們只需在main函式裡宣告乙個a類的引用來接受這個f()函式的返回值,比如a& b=a::f();這樣子我們就為靜態物件a起了乙個叫b的別名,一切對b的操作就是對a的操作,以後無論你再宣告多少個a類的引用去接收a::f()的返回值,其得到的都是當前狀態下的a,因為我們知道靜態變數只有在第一次定義初始化的時候,才會分配記憶體,以後再調f()函式,static a a(「小月」);這條語句都不會被執行,而直接返回當前狀態下的a!
單件模式(c )
單件模式是設計模式中最簡單的模式了。定義 確保乙個類只有乙個例項,並提供乙個全域性的訪問點。看下 的實現 class singleton 2 5 public 6 singleton 7 8static shared ptrgetinstance 9 else 15 16private 17stat...
C 單件模式
單件模式應該是所有設計模式中最簡單的乙個了,但是如果使用不當會出現很多問題,下面我們就分析一下單件模式 作用 保證乙個class只有乙個實體 instance 並為它提供乙個全域性唯一的訪問點 適用性 1 對於乙個類 物件 如果它比較大 占用的系統資源非常多 而且這些資源可以被全域性共享,則可以設計...
c 單件模式
1.意圖 保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。2.動機 對一些類來說,只有乙個例項是很重要的。雖然系統中可以有許多印表機,但卻只應該有乙個列印假離線 printer spooler 只應該有乙個檔案系統和乙個視窗管理器。乙個數字濾波器只能有乙個a d轉換器。乙個會計系統只能專用於...