@Delphius he estado usando el esquema de Al pero voy a usar lo que me has recomendado por el tema de no crear más que una instancia.
Cuatro cosas:
1) ¿TSigleton ha de ser mi clase cClase3?
2) He visto que redefines los métodos NewInstance y FreeInstance pero la clase TSingleton no hereda de ninguna otra, ¿qué se redefine entonces?
3) ¿
Variable := TSingleton.Create; y
Variable.Free; lo he poner en las secciones de inicialización y finalización de mi clase singleton?
4) ¿Quedaría así?
Código Delphi
[-]
unit Unit3;
interface
type
cClase3 = class
private
Contenido: String;
function ObtenerContenido: String;
procedure EstablecerContenido(Contenido: String);
public
class function NewInstance: TObject; override;
procedure FreeInstance; override;
property PropContenido: String read ObtenerContenido
write EstablecerContenido;
end;
implementation
var Clase3: cClase3;
function cClase3.ObtenerContenido: String;
begin
Result := Contenido;
end;
procedure cClase3.EstablecerContenido(Contenido: String);
begin
Self.Contenido := Contenido;
end;
class function cClase3.NewInstance: TObject;
begin
if (NOT Assigned(Clase3))
then begin
Clase3 := cClase3 (inherited NewInstance);
end;
result := Clase3;
end;
procedure cClase3.FreeInstance;
begin
Clase3 := nil;
inherithed FreeInstance;
end;
initialization
Clase3 := cClase3.Create;
finalization
Clase3.Free;
end.
Saludos.