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
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.
}
};