observerunit2.pas

来自「设计模式delphi版给想学delphi的朋友一个很有价值的参考」· PAS 代码 · 共 48 行

PAS
48
字号
unit ObserverUnit2;

interface
uses classes, stdctrls, Sysutils;
type
  TSubject = class;

  IObserver = interface
    procedure Update(theChangedSubject: TSubject); stdcall;
  end;

  TSubject = class
  private
    f_observers: Tlist;
  protected
    constructor Create;
  public
    destructor Destroy; virtual;
    procedure Attach(anObserver: IObserver); virtual;
    procedure Detach(anObserver: IObserver); virtual;
    procedure Notify(); virtual;
  end;

  TClockTimer = class(TSubject)
  public
    constructor Create;

    function GetHour(): integer; virtual;
    function getMinute(): integer; virtual;
    function getSecond(): integer; virtual;

    procedure Tick();
  end;

  TDigitClock = class(Tlabel, IObserver)
  private
    f_Subject: TClockTimer;
  public
    procedure IObserver.Update = IUpdate;
    constructor Create(s: TClockTimer);
    destructor Destroy; virtual;

    procedure IUpdate(theChangedSubject: TSubject); virtual;

    procedure Draw();
  end;

  TClock := class //

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?