<em id="kkln5"><ruby id="kkln5"><u id="kkln5"></u></ruby></em>
<rp id="kkln5"></rp>

    <s id="kkln5"><object id="kkln5"></object></s>
  1. <dd id="kkln5"><pre id="kkln5"></pre></dd>
  2. 首頁 > 編程 > 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.
     
    發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表

    圖片精選

    <em id="kkln5"><ruby id="kkln5"><u id="kkln5"></u></ruby></em>
    <rp id="kkln5"></rp>

      <s id="kkln5"><object id="kkln5"></object></s>
    1. <dd id="kkln5"><pre id="kkln5"></pre></dd>