<strong id="riedb"><track id="riedb"></track></strong><em id="riedb"><acronym id="riedb"></acronym></em>
<tbody id="riedb"></tbody>
  • <em id="riedb"><acronym id="riedb"></acronym></em>
    <tbody id="riedb"></tbody>

  • <tbody id="riedb"><center id="riedb"></center></tbody>
  • 首頁 > 編程 > Delphi > 正文

    Delphi Command模式

    2020-01-31 20:52:31
    字體:
    來源:轉載
    供稿:網友

    這個例子還是比較好理解的, 所以只給出代碼.
    unit pattern;
    interface
    uses Dialogs;
    type
      TAudioPlayer = class;
      TCommand = class
      public
        procedure execute; virtual; abstract;
      end;
      TPlayCommand = class(TCommand)
      private
        AudioPlayer: TAudioPlayer;
      public
        procedure execute; override;
        procedure Playcommand(AP: TAudioPlayer);
      end;
      TStopCommand = class(TCommand)
      private
        AudioPlayer: TAudioPlayer;
      public
        procedure execute; override;
        procedure StopComman(AP: TAudioPlayer);
      end;
      TRewindCommand = class(TCommand)
      private
        AudioPlayer: TAudioPlayer;
      public
        procedure execute; override;
        procedure RewindCommand(AP: TAudioPlayer);
      end;
      TKeyPad = class
      private
        PlayCommand: TCommand;
        StopCommand: TCommand;
        RewindCommand: TCommand;
      public
        constructor Create(PlayC, StopC, RewindC: TCommand); virtual;
        procedure play();
        procedure stop();
        procedure rewind();
      end;
      TAudioPlayer = class
      public
        procedure play();
        procedure stop();
        procedure rewind();
      end;
      TClient = class
      private
        KeyPad: TKeyPad;
        AudioPlayer: TAudioPlayer;
      public
        constructor Create();
        procedure test();
      end;
    implementation
    { TKeyPad }
    constructor TKeyPad.Create(PlayC, StopC, RewindC: TCommand);
    begin
      PlayCommand := PlayC;
      StopCommand := StopC;
      RewindCommand := RewindC;
    end;
    procedure TKeyPad.play;
    begin
      PlayCommand.execute;
    end;
    procedure TKeyPad.rewind;
    begin
      RewindCommand.execute;
    end;
    procedure TKeyPad.stop;
    begin
      StopCommand.execute;
    end;
    { TAudioPlayer }
    procedure TAudioPlayer.play;
    begin
      ShowMessage(´play´);
    end;
    procedure TAudioPlayer.rewind;
    begin
      ShowMessage(´rewind´);
    end;
    procedure TAudioPlayer.stop;
    begin
      ShowMessage(´stop´);
    end;
    { TPlayCommand }
    procedure TPlayCommand.execute;
    begin
      inherited;
      AudioPlayer.play();
    end;
    procedure TPlayCommand.Playcommand(AP: TAudioPlayer);
    begin
      self.AudioPlayer := AP;
    end;
    { TRewindCommand }
    procedure TRewindCommand.execute;
    begin
      inherited;
      AudioPlayer.Rewind;
    end;
    procedure TRewindCommand.RewindCommand(AP: TAudioPlayer);
    begin
      AudioPlayer := ap;
    end;
    { TStopCommand }
    procedure TStopCommand.execute;
    begin
      inherited;
      AudioPlayer.Stop;
    end;
    procedure TStopCommand.StopComman(AP: TAudioPlayer);
    begin
      AudioPlayer := ap;
    end;
    { TClient }
    constructor TClient.Create;
    begin
      AudioPlayer := TAudioPlayer.Create();
    end;
    procedure TClient.test;
    var
      PlayCommand: TCommand;
      StopCommand: TCommand;
      RewindCommand: TCommand;
    begin
      PlayCommand := TPlayCommand.Create;
      StopCommand := TStopCommand.Create;
      RewindCommand := TRewindCommand.Create;
      KeyPad := TKeyPad.Create(PlayCommand, StopCommand, RewindCommand);
      KeyPad.stop;
      KeyPad.play;
      KeyPad.rewind;
      KeyPad.Stop;
    end;
    end.
     
    發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表

    圖片精選

    黄色片自拍视频网站在线观看不卡无码丨精品精品自在现拍国产2021丨亚洲三级片在线观看在线免费观看丨波多野结衣在线视频一区二区三区
    <strong id="riedb"><track id="riedb"></track></strong><em id="riedb"><acronym id="riedb"></acronym></em>
    <tbody id="riedb"></tbody>
  • <em id="riedb"><acronym id="riedb"></acronym></em>
    <tbody id="riedb"></tbody>

  • <tbody id="riedb"><center id="riedb"></center></tbody>