Python Design Patterns - Singleton
Este padrão restringe a instanciação de uma classe a um objeto. É um tipo de padrão de criação e envolve apenas uma classe para criar métodos e objetos especificados.
Ele fornece um ponto global de acesso à instância criada.
Como implementar uma classe singleton?
O programa a seguir demonstra a implementação da classe singleton onde ela imprime as instâncias criadas várias vezes.
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
Resultado
O programa acima gera a seguinte saída -
O número de instâncias criadas é o mesmo e não há diferença nos objetos listados na saída.