本篇只是簡單介紹單列模式,主要是讓初學者理解單列模式,各種加鎖、多實現、業務場景待以後補充。
關鍵字:只產生乙個例項,構造器私有化。
構造器私有化(private),是為了禁止singleton類外部呼叫建構函式。如果從singleton類以外的**中呼叫建構函式
(new singleton),就會出現編譯錯誤。singleton模式在於確保任何情況下都只生成乙個例項。
1.1.餓漢模式:不管你需不需要我都例項化。
public
class
singleton
public
static singleton getinstance()
}
測試類:
public
class
singletonmain
else
}
1.2.懶漢模式:只有你需要的時候我才給
public
class
singletonlazy
//執行緒不安全
// public static singletonlazy getinstance()
// return singletonlazy;
// }
//執行緒安全,但鎖的是方法,粗粒度鎖
public
static
synchronized singletonlazy getinstance()
return singletonlazy;
}//先呼叫的停止一秒,多執行緒測試
private
void
slowdown()
catch
(interruptedexception e)
}}
Java設計模式之單列模式
單列模式 單一,也就是說乙個類只能有乙個物件。就類似於有些軟體只能開啟一次,當需要保證乙個物件在記憶體中的唯一性時,就需要引入單列模式。建立單列模式分三步操作 1.將建構函式私有化 2.在類中建立乙個本類物件 3.提供乙個公有的介面來返回建立的類 我們訪問類裡面的資料時,分兩種情況 1.通過例項化物...
詳談設計模式之單列模式
掌握設計模式的層次 剛開始學程式設計不久,聽說過什麼是設計模式 由很長時間的程式設計經驗,自己寫了很多 其中用到了設計模式,但是自己卻不知道 學習過了設計模式,發現自己已經在使用了,並且發現了一些新的模式挺好用的 閱讀了很多別人寫的原始碼和框架,在其中看到別人設計模式,並且能夠領會設計模式的精妙和帶...
設計模式 單列模式
何為設計模式呢?簡單的說就是能重複利用的解決方案,當碰到a專案也出現這種情況,b專案也出現這種情況 那麼是否能把這懂實現功能抽象出來,形成一種解決方案.單列模式 顧名思義就是乙個例項 即乙個物件只能初始化一次 作用 減少開闢記憶體空間,節約記憶體開銷 class program 因為a物件在記憶體堆...