溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

在什么情況下可以使用Singleton模式

發(fā)布時(shí)間:2022-01-13 17:14:18 來(lái)源:億速云 閱讀:144 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要介紹“在什么情況下可以使用Singleton模式”的相關(guān)知識(shí),小編通過實(shí)際案例向大家展示操作過程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“在什么情況下可以使用Singleton模式”文章能幫助大家解決問題。

適用性

在下面的情況下可以使用Singleton模式
? 當(dāng)類只能有一個(gè)實(shí)例而且客戶可以從一個(gè)眾所周知的訪問點(diǎn)訪問它時(shí)。

這句話的翻譯有一點(diǎn)點(diǎn)問題,還是看英文原文:

there must be exactly one instance of a class, and it must be accessible
to clients from a well-known access point.

作者認(rèn)為應(yīng)該這樣翻譯:當(dāng)類只能有一個(gè)實(shí)例而且要求這個(gè)實(shí)例可以通過一個(gè)清晰簡(jiǎn)明的訪問點(diǎn)訪問時(shí)。

? 當(dāng)這個(gè)唯一實(shí)例應(yīng)該是通過子類化可擴(kuò)展的,并且客戶應(yīng)該無(wú)需更改代碼就能使用一個(gè)擴(kuò)展的實(shí)例時(shí)。

英文原文

when the sole instance should be extensible by subclassing, and clients
should be able to use an extended instance without modifying their code.

作者的譯法:當(dāng)這個(gè)唯一的實(shí)例需要通過子類擴(kuò)展,而且要求客戶不需要修改代碼就可以使用這個(gè)擴(kuò)展的的實(shí)例時(shí)。

結(jié)構(gòu)

在什么情況下可以使用Singleton模式

估計(jì)這是《設(shè)計(jì)模式》一書中最簡(jiǎn)單的類圖了。但即便如此,這個(gè)圖仍然可以簡(jiǎn)化:真正必須的只有2個(gè)靜態(tài)成員。

參與者

? Singleton

— 定義一個(gè)Instance操作,允許客戶訪問它的唯一實(shí)例。 Instance是一個(gè)類操作(即Smalltalk中的一個(gè)類方法和C++中的一個(gè)靜態(tài)成員函數(shù))。

類操作這個(gè)詞時(shí)相對(duì)于實(shí)例操作而言的,C++中就是靜態(tài)成員函數(shù)。

— 可能負(fù)責(zé)創(chuàng)建它自己的唯一實(shí)例。

也可能時(shí)使用實(shí)現(xiàn)定義好的(例如全局變量)實(shí)例。

 協(xié)作

? 客戶只能通過Singleton的Instance操作訪問一個(gè)Singleton的實(shí)例。

關(guān)于“在什么情況下可以使用Singleton模式”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI