Singleton

Définition

S'assurer qu'une classe ne possède qu'une instance et fournit un point global pour y accéder.

Diagramme de classe

Diagramme de classe pattern Singleton

Intervenants

Les classes et/ou objets qui participent à ce pattern sont:

Singleton

  • Définit une méthode getInstance() qui permet aux client d'accéder à l'unique instance. getInstance() est une méthode de classe.
  • Est responsable de la création et de la maintenance de son unique instance.

Exemple Concret

Singleton

public class MonCache {

  private static Map cache ;
  
  private static volatile MonCache instance;

  //Constructeur protected -> non accessible depuis l'extérieur
  protected MonCache() {
    cache = new HashMap() ;
  }
  
  //Unique point d'accès
  public static MonCache getInstance() {
    synchronized (MonCache.class)
      if (instance == null) {
        instance = new MonCache();
      }
    }

    return instance;
  }

  //Méthode spécifique (rien à voir avec le pattern Singleton)
  public String getValeur(String key) {
    //Valeur non présente dans le cache -> on va la chercher
    if (! cache.containsKey(key)){
      cache.put(key, ConfigDlg.getString(key)) ;
    }
      
    return (String) cache.get(key) ;
  }
}

Client

String maValeur = MonCache.getInstance().getValeur("maCle") ;