0

La classe suivante montre quelque chose de similaire à un cas d'utilisation réel. Il renvoie toujours la même instance pour le même thread.Nom du motif de conception: Est-ce une usine?

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(); 
    } 

} 

Comment l'appelleriez-vous? Est-ce une "usine"? Un "détenteur de valeur"? "ThreadLocalStore"?

Répondre

4

Pas une usine. ressemble à un singleton. L'idée de l'usine est de créer des objets créés sur une classe basée.

+2

Oui, mais "par fil singleton". – deamon

0

getInstance() est certainement une méthode d'usine. Quelqu'un pourrait avoir un nom cool pour l'ensemble du pseudo-singleton per-thread, mais comme c'est un cas trop rare pour être largement pertinent, il n'y a aucune valeur à l'avoir. "Per-thread singleton" semble être la meilleure option pour moi.

+0

J'ai été tenté de baisser cette question ... Mais c'est techniquement correct! – Arafangion