設計模式 單例設計模式

2021-09-29 17:42:35 字數 1226 閱讀 9442

單例,顧名思義,就是整個系統中只有乙個例項,不能存在其他例項。

當建立例項需要大量的資源開銷,並且每個例項間都是共享資源時;

當建立多餘例項容易找出執行緒同步和安全問題時。

我們就來建立乙個計算機裡的上帝吧。

首先我們建立乙個上帝類,並把構造方法改為私有,保證外部無法建立上帝

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 對外提供乙個方法讓其他程式可以...