c++如何創(chuàng)建Singleton類(lèi)的子類(lèi)

今天小編給大家分享一下c++如何創(chuàng)建Singleton類(lèi)的子類(lèi)的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來(lái)了解一下吧。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、微信平臺(tái)小程序開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了鳳凰免費(fèi)建站歡迎大家使用!

創(chuàng)建Singleton類(lèi)的子類(lèi)

主要問(wèn)題與其說(shuō)是定義子類(lèi)不如說(shuō)是建立它的唯一實(shí)例,這樣客戶就可以使用它。事實(shí)上,指向單件實(shí)例的變量必須用子類(lèi)的實(shí)例進(jìn)行初始化。最簡(jiǎn)單的技術(shù)是在Singleton的Instance操作中決定你想使用的是哪一個(gè)單件。代碼示例一節(jié)中的一個(gè)例子說(shuō)明了如何用環(huán)境變量實(shí)現(xiàn)這一技術(shù)。

大致應(yīng)該如下:

c++如何創(chuàng)建Singleton類(lèi)的子類(lèi)

有兩點(diǎn)需要說(shuō)明:

  1. 代碼中使用GetClassType來(lái)決定具體使用那個(gè)類(lèi)的實(shí)例,也可以使用其他的方法,甚至宏定義。具體怎么做決定于實(shí)際的需求。

  2. 上述代碼在基類(lèi)的Cpp文件中引入了派生類(lèi)的頭文件。這是一個(gè)問(wèn)題,但為了實(shí)現(xiàn)簡(jiǎn)單,恐怕也只能這樣了。

另一個(gè)選擇Singleton的子類(lèi)的方法是將Instance的實(shí)現(xiàn)從父類(lèi)(即MazeFactory)中分離出來(lái)并將它放入子類(lèi)。這就允許C++程序員在鏈接時(shí)刻決定單件的類(lèi)(即通過(guò)鏈入一個(gè)包含不同實(shí)現(xiàn)的對(duì)象文件),但對(duì)單件的客戶則隱蔽這一點(diǎn)。

c++如何創(chuàng)建Singleton類(lèi)的子類(lèi)

c++如何創(chuàng)建Singleton類(lèi)的子類(lèi)

Singleton類(lèi)在何處注冊(cè)它們自己?一種可能是在它們的構(gòu)造器中。例如,MySingleton子類(lèi)可以像下面這樣做:

當(dāng)然,除非實(shí)例化類(lèi)否則這個(gè)構(gòu)造器不會(huì)被調(diào)用,這正反映了Singleton模式試圖解決的問(wèn)題!在C++中我們可以定義MySingleton的一個(gè)靜態(tài)實(shí)例來(lái)避免這個(gè)問(wèn)題。例如,我們可以在包含MySingleton實(shí)現(xiàn)的文件中定義:
static MySingleton theSingleton;
Singleton類(lèi)不再負(fù)責(zé)創(chuàng)建單件。它的主要職責(zé)是使得供選擇的單件對(duì)象在系統(tǒng)中可以被訪問(wèn)。靜態(tài)對(duì)象方法還是有一個(gè)潛在的缺點(diǎn) — 也就是所有可能的Singl eton子類(lèi)的實(shí)例都必須被創(chuàng)建,否則它們不會(huì)被注冊(cè)。

以上就是“c++如何創(chuàng)建Singleton類(lèi)的子類(lèi)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

新聞名稱:c++如何創(chuàng)建Singleton類(lèi)的子類(lèi)
當(dāng)前路徑:http://bm7419.com/article36/gighsg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開(kāi)發(fā)、網(wǎng)站制作、ChatGPT外貿(mào)網(wǎng)站建設(shè)、搜索引擎優(yōu)化商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作