¡Hola!
Vuelvo de una rica cena y me encuentro con esto de postre.
Debo decir que ambos postres son deliciosos.
En efecto, sus soluciones son más convenientes. Nomás yo me he limitado a dar lo "básico", en cierto modo, de como se puede enfocar el problema.
Mientras estaba realizando un estudio y análisis (hace ya unos meses) del patrón me dí cuenta de los problemas que implica el esquema que yo había estudiado. Por ello empecé a practicar diferentes enfoques y me dí cuenta de que hay muchas formas, algunas más "ingeniosas" que otras.
Llegué a opciones similares como la que han descrito, y una de las que más me convence a mi es tener una función GetSingleton o GetInstance como la de roman para acceder a un único objeto.
Mis prácticas me llevaron por interfaces, que es una opción bastante elegante y que no requiere de mucho lío y código ya que como bien señala roman, gracias al conteo de referencia es que se consigue liberar todo automáticamente. Y también practiqué llevandolo hacia herencia, es decir algo como:
Código Delphi
[-]Type
TAbstractSingleton = class
...
end;
TConcreteSingleton = class(TAbstractaSingleton)
...
end;
Detuve mis avances cuando quise meterme en un esquema thread-safe debido a que no domino el tema de los hilos, el uso de secciones críticas, mútex y cosas por el estilo
. Encontré algunos artículos que mencionaban algo al respecto pero no termino de comprender el tema
.
Si alguien se anima a enriquecer el hilo con una versión tread-safe les estaría agradecido
(y también noob
).
Saludos,