也许我不是很了解Delphi,但我想问一下:
在这个网站上:http://blogs.teamb.com/joannacarter/2004/06/30/690,我发现了一个基于接口的观察者模式实现。
当进行attach操作时,会调用以下内容:
在detach中,它有以下代码
在这个网站上:http://blogs.teamb.com/joannacarter/2004/06/30/690,我发现了一个基于接口的观察者模式实现。
当进行attach操作时,会调用以下内容:
procedure TSubject.Attach(Observer: IObserver);
begin
if fObservers = nil then
fObservers := TInterfaceList.Create;
fObservers.Add(AObserver);
Notify;
end;
在detach中,它有以下代码
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;