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