單例模式屬於設計模式中的建立型模式。即只能有乙個例項
單例模式的三個要點:
一是某個類只能有乙個例項;
二是它必須自行建立這個例項;
三是它必須自行向整個系統提供這個例項。
對應具體實現的三點:
一是單例模式的類只提供私有的建構函式,
二是類定義中含有乙個該類的靜態私有物件,
三是該類提供了乙個靜態的公有的函式用於建立或獲取它本身的靜態私有物件。
實現方式:
1.懶漢式,執行緒不安全。
public class singleton
public static singleton getinstance()
return instance;
} }
2.懶漢式,執行緒安全。加鎖 synchronized 保證單例
public class singleton
public static synchronized singleton getinstance()
return instance;
} }
3.餓漢式 執行緒安全
public class singleton
public static singleton getinstance()
}
4.雙檢鎖/雙重校驗鎖
public class singleton
public static singleton getsingleton()
} }
return singleton;
} }
5.登記式/靜態內部類
public class singleton
private singleton (){}
public static final singleton getinstance()
}
6.列舉
public enum singleton
}
一般情況下,不建議使用第 1 種和第 2 種懶漢方式,建議使用第 3 種餓漢方式。只有在要明確實現 lazy loading 效果時,才會使用第 5 種登記方式。如果涉及到反序列化建立物件時,可以嘗試使用第 6 種列舉方式。如果有其他特殊的需求,可以考慮使用第 4 種雙檢鎖方式。 設計模式之單例模式
前一段時間買了一本秦小波寫的 設計模式之禪 網上對這書的評價很高。現在還沒有看很多,但是有些地方頗有感觸,也並不是所有的地方都能看懂,但是會慢慢研究的。自己對於設計模式的感覺就是乙個字 牛!感覺會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...