Aller au contenu principal

Singleton

Patron de création utilisé lorsqu'il ne doit y avoir qu'une seule instance et qu'elle doit être accessible globalement, et que sa classe contrôle son instanciation.

Conception​

UML

Implémentation​

Son implémentation varie selon le langage et le contexte, mais repose généralement sur les mécanismes suivants :

  • Constructeur privé afin d'empêcher l'instanciation externe.
  • Donnée statique qui référence l'unique instance.
  • Méthode statique permettant d'accéder à l'instance.

C++​

L'implémentation préconisée en langage C++ est celle de Meyers :

/// @class Singleton
/// @brief Exemple de classe utilisant le patron de conception Singleton.
class Singleton {
public:
// Retrait des constructeurs de copies et des opérateurs d'affectation et de déplacement.
Singleton(const Singleton&) = delete;
Singleton& operator=(const Singleton&) = delete;
Singleton(Singleton&&) = delete;
Singleton& operator=(Singleton&&) = delete;

/// @brief Obtention de l'instance.
/// @return Instance.
static Singleton& getInstance() {
static Singleton instance;
return instance;
}

/// TODO: Déclaration et implémentation de méthodes.

private:
/// @brief Constructeur.
Singleton() {
/// TODO: Implémentation.
}

/// @brief Destructeur.
~Singleton() {
/// TODO: Implémentation.
}
};