» FOnChange: TNotifyEvent;
protected
» procedure Change;
published
property Enabled: Boolean read FEnabled write FEnabled;
» property OnChange: TNotifyEvent read FOnChange write FOnChange;
end;
implementation
procedure TSubject.Change;
var
» Obs: TSubjectObserver;
» I: Integer;
begin
» for I := 0 to FObservers.Count - 1 do
» begin
» Obs := FObservers[I];
» if Obs.Enabled then Obs.Change;
» end;
procedure TSubject.RegisterObserver(Observer: TSubjectObserver);
if FObservers.IndexOf(Observer) = -1 then
FObservers.Add(Observer);
procedure TSubject.UnregisterObserver(Observer: TSubjectObserver);
FObservers.Remove(Observer);
procedure TSubjectObserver.Change;
» if Assigned(FOnChange) then FOnChange(Self);
在上面的实现代码中:
· Tsubject的Change方法迭代所有注册的观察者,并调用每个观察者的Change方法,一个对多通知的实现。
· 观察者的Enabled属性决定它是或接受通知
· TsubjectObserver的OnChange事件真正的处理同步等操作。
正在组织
//很多摘自《设计模式》
上一页 [1] [2]
Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved. 闵涛 E_mail:admin@mintao.net(欢迎提供学习资源)
鄂公网安备 42011102001154号
站长:MinTao ICP备案号:鄂ICP备11006601号-18