今天小編給大家分享一下Singleton模式有哪些優(yōu)點(diǎn)的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來(lái)了解一下吧。
臨潁網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,臨潁網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為臨潁近千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢(qián),請(qǐng)找那個(gè)售后服務(wù)好的臨潁做網(wǎng)站的公司定做!
Singleton模式有許多優(yōu)點(diǎn):
1) 對(duì)唯一實(shí)例的受控訪問(wèn)
因?yàn)镾ingleton類封裝它的唯一實(shí)例,所以它可以嚴(yán)格的控制客戶怎樣以及何時(shí)訪問(wèn)它。
對(duì)于數(shù)據(jù)的訪問(wèn)控制,一般都要解決哪個(gè)數(shù)據(jù),什么時(shí)候被訪問(wèn)的問(wèn)題。這兩個(gè)問(wèn)題中,那個(gè)數(shù)據(jù)的問(wèn)題更加重要。單例模式保證只有一個(gè)可供使用的實(shí)例,剩下的監(jiān)控就變得很簡(jiǎn)單。
2) 縮小名空間
Singleton模式是對(duì)全局變量的一種改進(jìn)。它避免了那些存儲(chǔ)唯一實(shí)例的全局變量污染名空間。
從執(zhí)行層面來(lái)講全局變量和單例具有相近的特征,但是在編譯(編碼)層面有很大的不同。實(shí)例通過(guò)Singleton的類方法取得,這種用法不會(huì)象全局變量那樣占有變量名。
3) 允許對(duì)操作和表示的精化
Singleton類可以有子類,而且用這個(gè)擴(kuò)展類的實(shí)例來(lái)配置一個(gè)應(yīng)用是很容易的。你可以用你所需要的類的實(shí)例在運(yùn)行時(shí)刻配置應(yīng)用。
精化這個(gè)詞原文是refinement,在這里應(yīng)該是細(xì)化,具體化的意思。Singleton返回的雖然是基類類型,但是由于實(shí)際創(chuàng)建對(duì)象的處理被封裝在類的內(nèi)部,所以可以很方便的在生成實(shí)例時(shí)返回特定子類的對(duì)象。
4) 允許可變數(shù)目的實(shí)例
這個(gè)模式使得你易于改變你的想法,并允許Singleton類的多個(gè)實(shí)例。此外,你可以用相同的方法來(lái)控制應(yīng)用所使用的實(shí)例的數(shù)目。只有允許訪問(wèn)Singleton
實(shí)例的操作需要改變。
也許設(shè)計(jì)者在最開(kāi)始設(shè)想該類只有一個(gè)實(shí)例,但是后來(lái)想法變了。這時(shí)只要保證允許訪問(wèn)的對(duì)象只有一個(gè),還是可以使用單例模式。這種程度變化不會(huì)對(duì)使用者造成影響。
5) 比類操作更靈活
另一種封裝單件功能的方式是使用類操作(即C++中的靜態(tài)成員函數(shù)或者是Smalltalk中的類方法)。但這兩種語(yǔ)言技術(shù)都難以改變?cè)O(shè)計(jì)以允許一個(gè)類有多個(gè)實(shí)例。此外,C++中的靜態(tài)成員函數(shù)不是虛函數(shù),因此子類不能多態(tài)的重定義它們。
雖然也可以使用類操作(靜態(tài)函數(shù))的方式實(shí)現(xiàn)單例模式相同的功能,但是由于難以實(shí)現(xiàn)多個(gè)實(shí)例和重新定義操作,還是優(yōu)先選用單例模式吧。
以上就是“Singleton模式有哪些優(yōu)點(diǎn)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。