解決的問題:
保證乙個類在記憶體中的唯一性。原理:比如,必須要對於多個程式使用同乙個配置資訊時,就需要保證該物件的唯一性。
如何保證物件的唯一性呢?步驟:不允許其他程式使用new建立該類物件
在該類中建立乙個本類物件
對外提供乙個公共方法,使其他程式可以獲取該例項。
私有化該類的建構函式
通過new在本類中建立乙個本類物件
定義乙個公共的方法,將建立的物件返回。
單利設計模式的分類:
1.餓漢式
記憶體**://餓漢式class
single
//建立一次該類物件
private
static single s = new
single();
//對外提供獲取該物件的方法
public
static
single getinstance()
}
classsingledemo
}
說明:main函式進棧,並執行第一句**single s1 =single.getinstance(); ,建立s1引用
在方法區中載入single類的方法,在非靜態區有single的建構函式,靜態區有s成員變數、getinstance方法
在堆中建立乙個single物件,並讓s指向該物件
執行single s1 =single.getinstance(); 賦值操作,使s1的值為s的值。
s2同理,由於對記憶體中只有乙個該類的物件,並使靜態區的s指向它,因此s1和s2指向同一物件。
2.懶漢式
//餓漢和懶漢模式的區別:l懶漢式
class
single
//宣告乙個該類的引用
private
static
single s;
//對外提供獲取該類唯一物件的方法
public
static
single getinstance()
}
餓漢模式,類一載入物件就已經建立
懶漢模式,類載入時沒有物件,只有呼叫了getinstance方法才建立物件,即延遲載入
餓漢模式效率比懶漢模式高,因為餓漢模式不像懶漢模式那樣每次獲取物件都做判斷
懶漢模式在多執行緒中可能存在安全問題。
大話設計模式 單例模式
在開發過程中,其實很多情況下,都需要用到單例模式來維持物件的唯一性。比如執行緒池 資料來源 sessionfactory等。一般的做法 懶漢式 public class myclass 宣告乙個靜態方法來返或乙個單例物件 public static myclass getinstance 但是這個會...
大話設計模式 單例模式
一 單例模式 保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。二 例項 public class singleton public static singleton getinstance return singleton public class singletondousync publ...
《大話設計模式》 筆記 單例模式
單例模式 保證乙個類僅有乙個例項,並提供乙個供訪問的全域性點。其它優點 單例模式因為是卦裝的它的唯一例項,這樣它可以嚴格地控制客戶怎樣訪問它以及何時訪問它。簡單的說就是對唯一例項的受控訪問。呼叫 以上方式存在不足。在多執行緒的程式中,多個執行緒同時訪問單例類,呼叫getinstance 方法,會有可...