Ver Mensaje Individual
  #9  
Antiguo 15-02-2009
noob noob is offline
Miembro
 
Registrado: sep 2008
Posts: 212
Reputación: 18
noob Va por buen camino
@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; //Nota como esta variable se mantiene "oculta"

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);
            // algo más que deba hacer....
          end;
  result := Clase3;
end;

procedure cClase3.FreeInstance;
begin
  Clase3 := nil;
  inherithed FreeInstance;
end;

initialization

  Clase3 := cClase3.Create;

finalization

  Clase3.Free;

end.

Saludos.

Última edición por noob fecha: 16-02-2009 a las 22:02:05.
Responder Con Cita