может быть, я не очень хорошо знаю Delphi, однако я хочу спросить вас:
на этом сайте: http://blogs.teamb.com/joannacarter/2004/06/30/690 я нашел реализацию шаблона наблюдателя, основанного на интерфейсе.
при выполнении присоединения происходит вызов этого:
procedure TSubject.Attach(Observer: IObserver);
begin
if fObservers = nil then
fObservers := TInterfaceList.Create;
fObservers.Add(AObserver);
Notify;
end;
и в отделении он имеет код
procedure TSubject.Detach(Observer: IObserver);
begin
if fObservers <> nil then
begin
fObservers.Remove(AObserver);
if fObservers.Count = 0 then
fObservers := nil;
end;
end;
, если это будет:
procedure TSubject.Detach(Observer: IObserver);
begin
if fObservers <> nil then
begin
fObservers.Remove(AObserver);
if fObservers.Count = 0 then begin
fObservers.Free;
fObservers := nil;
end;
end;
end;