Design Pattern : Singleton

Dans la série des questions d’entretien, et des choses utiles, je vais passez en revue les design pattern les plus courants et les plus utiles.

Alors commençons tout d’abord par le Singleton :

Ce design pattern, ou Patron de conception, permet de créer une et une seule instance d’une classe et de renvoyer, quand une classe tiers demande une nouvelle instance, toujours la même. Il permet à plusieurs programme de tous partager la même instance d’une classe.

Le meilleur exemple d’utilisation restant la connection à une base de donnée. Car au sein d’une application on ne va jamais ouvrir plusieurs connection, par contre chaque programme qui exécute des requêtes aura besoin de récupérer le connection. D’où la solution suivante souvent utilisée d’un Singleton DbConnectionManager :

// récupérer la connection :
DbConnectionManager.getInstance().getConnection();

L’implémentation d’un singleton est simple, il suffit de définir le constructeur comme privé, et de conserver une variable static représentant l’instance à renvoyer de notre classe :

public class Singleton {

  private static Singleton instance;

  private Singleton() { /* Do nothing... */ }

  public static Singleton getInstance() {
    if (instance == null)
      instance = new Singleton();
    return instance;
  }
}

Voilà comment créer un singleton, et factoriser les accès à une ressource. Quand le singleton est utilisé dans un contexte multi-thread, il est nécessaire que la méthode getInstance soit synchronized (Verrou d’exclusion mutuelle) pour que lors de l’appel simultané à cette méthode de deux processus léger, l’un créer une nouvelle instance (si inexistante) et l’autre se récupère la première et unique instance.

Publicités

2 Commentaires

  1. Cool! 🙂 (qu’est ce qu’on ne ferait pas pour repousser une étude de cas sur IBM…)

  2. […] quand même parfois quelques petites choses dignes d'intérêt. Entre autres, Olivier commence une série d'articles sur les Design Patterns, Dusty aide les chasseurs de primes, Microsoft donne dans le FUD (comment ça pas nouveau ?), XKCD […]

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :