設計模式之單例模式

2021-09-30 21:50:05 字數 1999 閱讀 6828

單利模式是確保系統中某乙個類只要乙個例項。單例的類圖如下:

**清單:單例通用模板,餓漢式,執行緒安全。

public class singleton 

/*** 通過該方法向外提供例項

*/ public static singleton getinstance()

/*** 其他方法,盡量使用static

*/ public static void other()

}

**清單:雙重檢查判斷單例,懶漢式,執行緒安全。

public class singleton 

/*** 通過該方法向外提供例項

*/ public static singleton getinstance()

}} return singleton; }

/*** 其他方法,盡量使用static

*/ public static void other()

}

**清單:靜態內部類,執行緒安全。

public class singleton 

/*** 建構函式私有化,防止new

*/ private singleton(){}

/*** 通過該方法向外提供例項

*/ public static singleton getinstance()

/*** 其他方法,盡量使用static

*/ public static void other()

}

**清單:序列化與反序列化,靜態內部類,執行緒安全。

public class singleton implements serializable

/*** 建構函式私有化,防止new

*/ private singleton(){}

/*** 序列化將這個類讀入到記憶體(寫入磁碟)中,而反序列化可以從記憶體(寫入磁碟)中將其讀出進而組裝乙個和

* 以前一摸一樣的物件,不過當序列化遇到單例的時候,就出現了問題,這樣破壞了單例的規則。jvm從記憶體中

* 反序列化乙個新物件時,就會自動呼叫這個readresolve()來返回指定好的物件了,單例規則也就得到了保證。

*/ protected object readresolve() throws objectstreamexception

/*** 通過該方法向外提供例項

*/ public static singleton getinstance()

/*** 其他方法,盡量使用static

*/ public static void other()

}

**清單:靜態**塊,餓漢式,執行緒安全。

public class singleton 

/*** 建構函式私有化,防止new

*/ static

/*** 通過該方法向外提供例項

*/ public static singleton getinstance()

/*** 其他方法,盡量使用static

*/ public static void other()

}

**清單:列舉資料型別實現單例模式,餓漢式,執行緒安全。

public class singletonenum 

public string str() }

/*** 獲取例項

*/public string getinstance()

}

單例模式的缺點:

單例模式一般沒有介面,擴充套件困難,若要修改,除了修改**基本上沒有其他方法可以實現;

單例模式不利於測試;

單利模式與單一職責有衝突;

注意:方法裡面的變數是執行緒安全的。

設計模式之單例模式

前一段時間買了一本秦小波寫的 設計模式之禪 網上對這書的評價很高。現在還沒有看很多,但是有些地方頗有感觸,也並不是所有的地方都能看懂,但是會慢慢研究的。自己對於設計模式的感覺就是乙個字 牛!感覺會23種設計模式並且會熟練運用的人,真的就是大師級的牛人了,設計模式是乙個專案主管或者架構師一定要會的東西...

設計模式之單例模式

package com.xie.singleton public class singleton 提供乙個共有的靜態的入口方法 public static singleton getinstance 懶漢式 延遲載入 提供乙個私有的靜態的成員變數,但不做初始化 private static sing...

設計模式之 單例模式

單例模式 singleton 保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。單例模式 單件模式 使用方法返回唯一的例項 public class singleton private static singleton instance public static singleton geti...