單例模式(singleton):保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。
單例模式(單件模式)
使用方法返回唯一的例項
public class singleton
private static singleton instance;
public static singleton getinstance()
return instance;
}使用屬性返回唯一的例項
public class singleton
private static singleton instance;
public static singleton instance
return instance;}}
多執行緒訪問時需要對例項進行加鎖
public class singleton
private static singleton instance;
//定義乙個輻助物件
private static object obj = new object();
//多執行緒使用單例模式(double check 雙重檢查)
public static singleton getinstances()}}
return instance;
}在c#與公共語言執行庫也提供了一種「靜態初始化」方法,這種方法不需要開發人員顯式地編寫執行緒安全**,即可解決多執行緒環境下它是不安全的問題
public sealed class singleton
public static singleton getinstance()
}由於這種靜態初始化方式是自己被載入時就將自己例項化,所以被形象地稱之為餓漢式單例類,上面兩種處理方式是要在第一次被引用時,才會將自己例項化,所以就被稱為懶漢式單例類。
由於餓漢式,即靜態初始化方式,是類一載入就例項化,所以要提前占用系統資源,然而懶漢式,又會面臨多執行緒訪問安全性的問題,需要雙重鎖定的處理才可以保證安全。所在到底使用哪一種方式,取決於實際的需求。
設計模式之單例模式
前一段時間買了一本秦小波寫的 設計模式之禪 網上對這書的評價很高。現在還沒有看很多,但是有些地方頗有感觸,也並不是所有的地方都能看懂,但是會慢慢研究的。自己對於設計模式的感覺就是乙個字 牛!感覺會23種設計模式並且會熟練運用的人,真的就是大師級的牛人了,設計模式是乙個專案主管或者架構師一定要會的東西...
設計模式之單例模式
package com.xie.singleton public class singleton 提供乙個共有的靜態的入口方法 public static singleton getinstance 懶漢式 延遲載入 提供乙個私有的靜態的成員變數,但不做初始化 private static sing...
設計模式之單例模式
定義 單例模式 singleton 保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。場景 很多exe檔案都只允許執行一次,即當你第乙個exe開啟未關閉之前,再第二次開啟,會提示說 已經有乙個exe程式在執行了 如果將這個exe檔案看成乙個類,則它就是乙個單例。下面的 沒有考慮多執行緒下的鎖定...