Design Patterns - Singleton

2 h 5 exercices Niveau 7

Ce pattern limite l'instanciation d'une classe à un seul objet. Il s'agit d'un type de pattern de création et implique une seule classe pour créer des méthodes et des objets spécifiés.

Il fournit un point d'accès global à l'instance créée.

Comment implémenter une classe singleton ?

Le programme suivant démontre l'implémentation de la classe singleton où il imprime les instances créées plusieurs fois.

class Singleton:
    __instance = None
    @staticmethod 
    def getInstance():
        """Static access method."""
        if Singleton.__instance == None:
            Singleton()
        return Singleton.__instance
    def __init__(self):
        """Virtually private constructor."""
        if Singleton.__instance != None:
            raise Exception("This class is a singleton!")
        else:
            Singleton.__instance = self
s = Singleton()
print(s)

s = Singleton.getInstance()
print(s)

s = Singleton.getInstance()
print(s)

Résultat

Le programme ci-dessus génère le résultat suivant :

<__main__.Singleton instance at 0x018356c0>
<__main__.Singleton instance at 0x018356c0>
<__main__.Singleton instance at 0x018356c0>

Le nombre d'instances créées est le même et il n'y a pas de différence dans les objets listés en sortie.

logo discord

Besoin d'aide ?

Rejoignez notre communauté officielle et ne restez plus seul à bloquer sur un problème !

En savoir plus