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,