單例,顧名思義,就是整個系統中只有乙個例項,不能存在其他例項。
當建立例項需要大量的資源開銷,並且每個例項間都是共享資源時;
當建立多餘例項容易找出執行緒同步和安全問題時。
我們就來建立乙個計算機裡的上帝吧。
首先我們建立乙個上帝類,並把構造方法改為私有,保證外部無法建立上帝
public
class
god//構造方法私有化
}
然後我們發現,外部無法建立此上帝,那上帝怎麼出現?當然是上帝自己造了自己
public
class
god//構造方法私有化
}
我們用餓漢模式,在專案初始化時就載入。那麼建立完上帝後,要怎麼提供給外部膜拜呢
public
class
god//構造方法私有化
/** * 提供公開獲取god例項的方法
* @return
*/public
static god getinstance()
}
這樣,外部就可以呼叫getinstance方法請到上帝了。
好了,單例模式已經構建完了,但是還有乙個問題,我們是用的餓漢模式構建的,在專案初始化時就會載入,那如果專案啟動後很長時間內,這個上帝沒有人請,那麼就會造成記憶體資源空間的浪費,所以,我們可以用懶漢模式建立上帝,讓上帝在有人請的時候才出現
public
class
godpublic
static god getinstance()
return god;
}}
但是這樣在多執行緒下會有問題,造成執行緒不安全,那麼我們就在請神的時候加上synchronized
public
class
godpublic
static
synchronized god getinstance()
return god;
}}
但是呢,問題依然存在,這樣寫會對效能造成影響,所以就用雙重檢查鎖
public
class
godpublic
static god getinstance()
}}return god;
}}
設計模式 單例設計模式
歷史 最早是建築學領域的模式,然後gof四人由其引申到編碼方面,總結了23種設計模式 設計模式 解決某一類事情最行之有效的方法 2.1 體現 餓漢式,保證物件的唯一性 class singleton 私有化建構函式禁止該類建立物件 private static singleton st new si...
設計模式 單例設計模式
單例模式,是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例的特殊類。通過單例模式可以保證系統中乙個類只有乙個例項。即乙個類只有乙個物件例項 單例模式的要點有三個 一是某個類只能有乙個例項 二是它必須自行建立這個例項 三是它必須自行向整個系統提供這個例項。單例設計模式 解決的問題 可以保...
設計模式 單例設計模式
設計模式是對問題行之有效的解決方案,它其實是一種思想。單例設計模式 解決的問題 可以保證乙個類在記憶體中只能有乙個物件。比如多個程式使用相同的配置資訊物件時,就需要保證物件的唯一性 如何保證唯一性 1 不允許其他程式用new建立類物件 2 在該類中建立乙個本類例項 3 對外提供乙個方法讓其他程式可以...