打印本文 打印本文 关闭窗口 关闭窗口
设计模式、用Delphi描述-->Observer模式
作者:武汉SEO闵涛  文章来源:敏韬网  点击数1483  更新时间:2009/4/23 18:40:56  文章录入:mintao  责任编辑:mintao
Boolean;

»   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;

end;

 

procedure TSubject.RegisterObserver(Observer: TSubjectObserver);

begin

  if FObservers.IndexOf(Observer) = -1 then

    FObservers.Add(Observer);

end;

 

procedure TSubject.UnregisterObserver(Observer: TSubjectObserver);

begin

  FObservers.Remove(Observer);

end;

 

procedure TSubjectObserver.Change;

begin

» if Assigned(FOnChange) then FOnChange(Self);

end;

 

在上面的实现代码中:

·      Tsubject的Change方法迭代所有注册的观察者,并调用每个观察者的Change方法,一个对多通知的实现。

·      观察者的Enabled属性决定它是或接受通知

·      TsubjectObserver的OnChange事件真正的处理同步等操作。

Delphi实例

正在组织

//很多摘自《设计模式》

 

上一页  [1] [2] 

打印本文 打印本文 关闭窗口 关闭窗口