定義:ensure a class has only one instance, and provide a global point of access to it.(確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。)
public class singleton
public static singleton getinstance()
public void method()
public static void main(string args)
}
此種方式在工作中最為簡單常用。類載入到記憶體後,就只被例項化一次,所以只會產生乙個例項,jvm保證執行緒安全。唯一的缺點是不管用到與否,都會在類載入的時候完成例項化。
public class singletonlazy
public static singletonlazy getinstance()}}
return instance;
}public void method()
public static void main(string args)
}}
此種方式雖然達到了按需初始化的目的,但是帶來了執行緒不安全的問題,所以通過加鎖的方式解決,但是又帶來效率下降的問題,另外變數需要新增volatile關鍵字,防止指令重排序。
public class singletoninner
private static class singletoninnerholder
public static singletoninner getinstance()
public void method()
public static void main(string args)
}}
此種方式解決了上面兩種方式的問題,當singletoninner
類被載入的時候,singletoninnerholder
內部類是不會被載入的,只有在呼叫getinstance()
的時候才會被載入,既達到了懶載入,又保證了只有乙個例項。
public enum singletonenum
public static void main(string args)
}}
此種方式不僅可以解決執行緒同步問題,還可以防止反序列化,因為列舉類沒有構造方法。 設計模式之單例模式
前一段時間買了一本秦小波寫的 設計模式之禪 網上對這書的評價很高。現在還沒有看很多,但是有些地方頗有感觸,也並不是所有的地方都能看懂,但是會慢慢研究的。自己對於設計模式的感覺就是乙個字 牛!感覺會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...