Ver Mensaje Individual
  #1  
Antiguo 24-01-2006
adpa adpa is offline
Miembro
 
Registrado: dic 2005
Posts: 22
Reputación: 0
adpa Va por buen camino
Más problema padrón observador

Hola:
Tengo el siguiente sujeto y observador declarado.
Código Delphi [-]
type
TObserver  = CLASS
   public
    procedure Update(const Subject: TObject); virtual; abstract;
  end;
  TSubject = class
  private
    fController: TObject;
    fObservers: cLista;
  public
    constructor Create(Controller: TObject);overload;
    procedure Attach(Observer: TObserver);
    procedure Detach(Observer: TObserver);
    procedure Notify;
  end;

implementation
constructor TSubject.Create(Controller: TObject);
  begin
    inherited Create;
    fController := Controller;
  end;
  procedure TSubject.Attach(Observer: TObserver);
  begin
    if (fObservers = nil) then
      fObservers := cLista.Create(5);
    fObservers.Insertar(Observer);
  end;
  procedure TSubject.Detach(Observer: TObserver);
  begin
    if fObservers <> nil then
    begin
      fObservers.Remove(Observer);
      if (fObservers.Longitud) = 0 then
      begin
        fObservers.Free;
        fObservers := nil;
      end;
    end;
  end;
  procedure TSubject.Notify;
  var
    i: Integer;
  begin
    if (fObservers <> nil) then
      for i := 0 to Pred(fObservers.Longitud) do
        TObserver(fObservers[i]).Update(fController);
  end;

end.
El objeto consumidor hereda de tObserver y tienda de tSubject.
Pero cuando hago el attach
self.Attach(c);
dentro de procedure TSubject.Attach(Observer: TObserver); la variable observer
nil por lo tanto no me inserta.
¿Como puedo solucionarlo? ¿Tengo que redefinir attach en algún sitio o añadirle algo más a TObserver.

Muchas Gracias,
Responder Con Cita