2011年4月6日 星期三

Gof Creational - Singleton Pattern

Single Pattern

Singleton可以說是我最早接觸到的pattern了,大多的使用場合是有用在多執行緒上面,為了確保僅有一個物件時體會產生。


而singleton常常伴隨的議題是 多執行緒的安全姓,加減參考一下以下的網頁說明。


http://www.javamex.com/tutorials/double_checked_locking.shtml


http://www.javamex.com/tutorials/double_checked_locking_fixing.shtml




  • 優點




  1. 控制物件實體的生成過程,可保持始終只有唯一一個物件實體。

  2. 降低了命名空間的使用頻繁問題。

  3. 精巧的操作與呈現設計。

  4. 同時也提供允許有特定數量的物件實體。

  5. 比起直接物件實體操作來的有彈性。




  • 適用情境




  1. 適用於一個單一入口的存取點作為設計使用。




  • J2SE 使用案例 - java.lang.Runtime

  • 範例


public final class Singleton {
private static Singleton instance;
private int value;
private Singleton() {System.out.println("Singleton constructed.");}
public static synchronized Singleton getInstance() {
// if it has not been instantiated yet
if (instance == null)
// instantiate it here
instance = new Singleton();
return instance;
}


 

沒有留言: