<del id="7msxa"><table id="7msxa"><strong id="7msxa"></strong></table></del><legend id="7msxa"></legend>

<tbody id="7msxa"></tbody>
  • <ol id="7msxa"></ol><th id="7msxa"><track id="7msxa"><rt id="7msxa"></rt></track></th>
    1. <dd id="7msxa"></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.
       
      發表評論 共有條評論
      用戶名: 密碼:
      驗證碼: 匿名發表

      圖片精選

      japan日本人妻熟老太
      <del id="7msxa"><table id="7msxa"><strong id="7msxa"></strong></table></del><legend id="7msxa"></legend>

      <tbody id="7msxa"></tbody>
    3. <ol id="7msxa"></ol><th id="7msxa"><track id="7msxa"><rt id="7msxa"></rt></track></th>
      1. <dd id="7msxa"></dd>