0

以下類顯示類似於實際用例的內容。它總是返回同一個線程的同一個實例。設計模式名稱:是工廠嗎?

public class LookingForName { 

    private static final ThreadLocal<Something> threadLocal = 
     new ThreadLocal<Something>(){ 
      @Override 
      protected Something initialValue() { 
       return getSomethingSpecial(); // not relevant 
      } 
     }; 

    /** 
    * @return always the same instance of "Something" for the current thread. 
    */ 
    public static Something getInstance() { 
     return threadLocal.get(); 
    } 

} 

你會怎麼稱呼它?這是一個「工廠」嗎?一個「價值持有者」? 「ThreadLocalStore」?

回答

4

不是工廠。看起來像一個單身人士。工廠的想法是創建基於類的對象。

+2

是的,但「每個線程單」。 – deamon 2010-08-11 11:29:06

0

getInstance()絕對是一種工廠方法。

有人可能爲整個每個線程僞單身人士準備了一個很酷的名字,但由於這種情況很少相關,所以沒有任何價值。 「每線程單身人士」聽起來像是我最好的選擇。

+0

我很想回避這個問題......但它在技術上是正確的! – Arafangion 2011-03-02 13:57:35