熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java高級技術 >> 正文

23種設計模式的Java版--Singleton(單例)

2013-11-23 19:40:21  來源: Java高級技術 

  所謂的單例模式是指單個實例單即單個的意思例乃實例的意思就是一個類生成的對象因此單例模式的功能作用就是保證一個類只生成一個對象是在代碼級的實現不是人工維護的

  單例模式的實現需要以下兩個步驟

  單例類有一個存貯單例的私有屬性

  單例類的構造方法必須是私有的

  單例類要有獲取單例類實例的靜態方法

  單例類示例

  餓漢式單例代碼

  package comtaopatternsingleton;

  /**

  * @author TaoistWar

  *

  */

  public class Singleton {

  // 單例類有一個存貯單例的私有屬性

  private static Singleton singleton = new Singleton();

  // 單例類的構造方法必須是私有的

  private Singleton() {

  }

  // 單例類要有獲取單例類實例的靜態方法

  public static Singleton getInstance() {

  return singleton;

  }

  }

  懶漢式單例代碼

  package comtaopatternsingleton;

  /**

  *

  * @author TaoistWar

  *

  */

  public class LazySingleton {

  // 單例類有一個存貯單例的私有屬性

  private static LazySingleton singleton;

  // 單例類的構造方法必須是私有的

  private LazySingleton() {

  }

  // 單例類要有獲取單例類實例的靜態方法

  public synchronized static LazySingleton getInstance() {

  if (singleton == null) {

  singleton = new LazySingleton();

  }

  return singleton;

  }

  }

  比較

  餓漢式單例加載時生成單例獲取單例時不需要考慮多線程

  懶漢式單例調用時生成單例獲取單例時如果多線程需要加synchronized鎖定方法以保證單例

  結論

  因為在我們的開發中如果使用單例模式肯定會用到廢話!呵呵所以每次調用加個synchronized鎖的效率沒有不加高因此推薦第一種直接在私有屬性中生成實例


From:http://tw.wingwit.com/Article/program/Java/gj/201311/27268.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.