Este patrón restringe la instanciación de una clase a un objeto. Es un tipo de patrón de creación e involucra solo una clase para crear métodos y objetos específicos.
Proporciona un punto de acceso global a la instancia creada.
¿Cómo implementar una clase singleton?
El siguiente programa demuestra la implementación de la clase singleton donde imprime las instancias creadas varias veces.
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
Salida
El programa anterior genera la siguiente salida:
El número de instancias creadas es el mismo y no hay diferencia en los objetos listados en la salida.