單例模式(Singleton)

2021-10-03 16:46:51 字數 1214 閱讀 5193

設計模式就是我們在實際程式設計過程中,逐漸總結出的一些解決問題的套路。

單例模式,就是只有乙個例項(例項化物件)。

使用單例模式解決什麼問題?

一般都是 new 物件太費勁了,比如需要執行 1000 行**,耗時 10 秒。

或者是頻繁的 new 新的物件沒有必要。

兩種實現方式

先私有化構造方法,使得不能直接通過 new 呼叫

再宣告乙個私有的類變數(初始值為 new 物件 或者 null,即餓漢和懶漢的區別)

再寫乙個 public 的方法,返回 2 中的私有變數,方法名一般叫 getinstance()

1. 餓漢式

/**

* 餓漢式的單例模式

*/public

class

single

//私有的構造,構造方法私有化,就不能直接使用 new 來建立物件

private

single()

//私有的 single 型別的類變數

private

static single single =

newsingle()

;public

static single getinstance()

}public

class

test

}

2. 懶漢式
/**

* 懶漢式單例模式

*/public

class

single1

//再私有化乙個類變數,開始為 null

private

static single1 single1 = null;

//第一次呼叫時,new 乙個物件,後面不會再 new ,直接用同乙個物件

public

static single1 getinstance()

return single1;

}}

懶漢式和餓漢式的區別,就是什麼時候 new。

餓漢式,是在類載入之後,還沒人呼叫的時候,就先 new 好乙個物件,以後不論誰來呼叫 getinstance 方法,直接返回事先 new 好的物件。

懶漢式,是在第一次呼叫 getinstance 方法是來 new 物件,以後再呼叫時直接返回第一次 new 好的物件。

Singleton 單例 模式

singleton 模式的宗旨在於確保某個類只有乙個例項,別且為之提供乙個全域性訪問點。為了防止其他工作人員例項化我們的類,可以為該類建立唯一乙個構造器,並將構造器的可見 設定為私有。值得注意的是,如果我們建立了其他的非私有的構造器,或者根本沒有為該類提 供構造器,那麼其他人員還是能例項化我們的類。...

Singleton 單例 模式

今天看了,單例模式。感覺他的本質就是,控制類例項的個數。特例就是,控制static變數的唯一性,保證各個程式共享著同一例項。乙個例子 package singleton description 這是乙個單例模式的使用demo author kyle goal 實現乙個類僅有乙個例項 singleto...

單例(Singleton)模式

單例模式的特點 singleton模式包含的角色只有乙個,那就是singleton。singleton擁有乙個私有建構函式,確保使用者無法通過new取得singleton的例項。除此之外,該模式中包含乙個靜態私有成員變數instance與靜態公有方法instance。instance方法負責檢驗並例...