next up previous contents index
Next: Unités de compilation Up: Patterns Previous: Patterns d'accès et discipline

      
Un pattern de création : les classes singletons

Une classe singleton est une classe qui ne peut avoir qu'une seule instance. La réalisation d'une telle classe met en \oeuvre :

class Singleton {
  private Object champ;
  // ...
  private static Singleton instance;
  private Singleton(Object champ) {
    this.champ = champ;
    // ...
  }
  Object valChamp() { return champ; }
  // ...
  static Singleton uniqueInstance(Object champ) {
   if (instance == null) {
      instance = new Singleton(champ);
   }
   return instance;
  }
}

Cette classe sera utilisée ainsi :

    Singleton s1 = Singleton.uniqueInstance(new Double(2.3));

Remarquons que si la méthode uniqueInstance() n'est pas appelée, l'instance n'est pas créée : dans une application donnée, cette classe a au plus une instance. La classe AVide dont l'unique instance est l'arbre binaire vide est programmée de façon légèrement différente, l'instance étant créée par initialisation du champ statique, même si la méthode d'accès à l'instance n'est pas invoquée.



R. Lalement
2000-10-23