溫馨提示×

溫馨提示×

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

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

Singleton模式有哪些優(yōu)點

發(fā)布時間:2022-01-13 17:16:26 來源:億速云 閱讀:166 作者:iii 欄目:大數(shù)據(jù)

今天小編給大家分享一下Singleton模式有哪些優(yōu)點的相關(guān)知識點,內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

Singleton模式有許多優(yōu)點:
1) 對唯一實例的受控訪問

因為Singleton類封裝它的唯一實例,所以它可以嚴(yán)格的控制客戶怎樣以及何時訪問它。

對于數(shù)據(jù)的訪問控制,一般都要解決哪個數(shù)據(jù),什么時候被訪問的問題。這兩個問題中,那個數(shù)據(jù)的問題更加重要。單例模式保證只有一個可供使用的實例,剩下的監(jiān)控就變得很簡單。

2) 縮小名空間

Singleton模式是對全局變量的一種改進(jìn)。它避免了那些存儲唯一實例的全局變量污染名空間。

從執(zhí)行層面來講全局變量和單例具有相近的特征,但是在編譯(編碼)層面有很大的不同。實例通過Singleton的類方法取得,這種用法不會象全局變量那樣占有變量名。

3) 允許對操作和表示的精化

Singleton類可以有子類,而且用這個擴展類的實例來配置一個應(yīng)用是很容易的。你可以用你所需要的類的實例在運行時刻配置應(yīng)用。

精化這個詞原文是refinement,在這里應(yīng)該是細(xì)化,具體化的意思。Singleton返回的雖然是基類類型,但是由于實際創(chuàng)建對象的處理被封裝在類的內(nèi)部,所以可以很方便的在生成實例時返回特定子類的對象。

4) 允許可變數(shù)目的實例

這個模式使得你易于改變你的想法,并允許Singleton類的多個實例。此外,你可以用相同的方法來控制應(yīng)用所使用的實例的數(shù)目。只有允許訪問Singleton
實例的操作需要改變。

也許設(shè)計者在最開始設(shè)想該類只有一個實例,但是后來想法變了。這時只要保證允許訪問的對象只有一個,還是可以使用單例模式。這種程度變化不會對使用者造成影響。

5) 比類操作更靈活

另一種封裝單件功能的方式是使用類操作(即C++中的靜態(tài)成員函數(shù)或者是Smalltalk中的類方法)。但這兩種語言技術(shù)都難以改變設(shè)計以允許一個類有多個實例。此外,C++中的靜態(tài)成員函數(shù)不是虛函數(shù),因此子類不能多態(tài)的重定義它們。

雖然也可以使用類操作(靜態(tài)函數(shù))的方式實現(xiàn)單例模式相同的功能,但是由于難以實現(xiàn)多個實例和重新定義操作,還是優(yōu)先選用單例模式吧。

以上就是“Singleton模式有哪些優(yōu)點”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注億速云行業(yè)資訊頻道。

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

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

AI