您好,登錄后才能下訂單哦!
設計模式系列教程之單例模式-原理介紹
一:單例模式(Singleton)學習步驟
經典的單例模式原理:
本文出處:凱哥Java(wx:kaigejava)
先來看看單例模式的介紹:
其重點就是,使類對象成為系統中唯一的一個實例。怎么理解這句話呢?
我們從數學與邏輯學中來理解:singleton的定義是“有且僅有一個”的意思。
我們來看看單例在哪些地方會被使用到,來理解單例模式的意義:
比如我們系統中使用到的線程池、數據源、緩存及硬件等設備。
從線程池、緩存我們就可以看出單例模式的意義:如果多個實例會有造成沖突、結果的不一致性等問題基于解決這個問題,經過總結,得到了可以在系統中有且僅有一個對象就可以了。
思考:
1:是否可以使用靜態變量的方式類實現呢?
其實從使用效果上來看,這種方式也是可以的。
2:程序員之間協商一個全局變量是否也可以呢?
這樣做,從使用效果來看也是可以的。
總結:
單例模式;確保一個類最多只有一個實例,并提供一個全局的訪問。
怎么設置類為單例呢?
思考點:
1:怎么讓類不被隨意的構造出來?
2:如果不能隨意構造出類,那么如果想要使用這個類怎么辦?
問題一:我們來看看,正常的創建類是怎么創建的?
Student studnet = new Student();
使用的是new關鍵字來創建的。我們又知道使用new關鍵字創建類的時候,其實調用的就是類的默認構造器-->既是無參構造器。
所以,如果想要類只有一個,把構造器私有化,這樣就不能使用new關鍵字也就是不能使用無參構造器來創建類了。這樣就保證了類不被隨意的創造了。
問題二:如果構造函數被私有化了,想要使用類怎么辦?
可以在Student類中new Student().然后對外提供一個公共的static的方法來獲取即可。
來看看經典單例模式的類圖:
好了。本節單例模式原理講解完成。下一節課,我們通過一個小例子用代碼實現單例模式
凱哥個人博客:www.kaigejava.com
聯系凱哥-->凱哥公眾號:凱哥Java(kaigejava)
本文凱哥博客地址:http://kaigejava.com/gwjeesns/article/detail/549
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。