<track id="pdikh"><span id="pdikh"><em id="pdikh"></em></span></track>
<track id="pdikh"></track>

<bdo id="pdikh"></bdo><tbody id="pdikh"><nobr id="pdikh"><address id="pdikh"></address></nobr></tbody>
  • <bdo id="pdikh"></bdo>

    <menuitem id="pdikh"><dfn id="pdikh"></dfn></menuitem>

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

      圖片精選

      www con.co.三级免费视频不卡丨秋霞中文不卡无码午夜av影院丨丨吉沢明步高清无码电影免费一区二区丨japanese色国产在线观看
      <track id="pdikh"><span id="pdikh"><em id="pdikh"></em></span></track>
      <track id="pdikh"></track>

      <bdo id="pdikh"></bdo><tbody id="pdikh"><nobr id="pdikh"><address id="pdikh"></address></nobr></tbody>
    2. <bdo id="pdikh"></bdo>

      <menuitem id="pdikh"><dfn id="pdikh"></dfn></menuitem>

      <tbody id="pdikh"></tbody>