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

        圖片精選

        亚洲性爱高潮视频_夜夜爽一区二区三区精品_亚洲国产第一福利一区二区_久久精品亚洲国产av

            1. <th id="osa2k"><track id="osa2k"></track></th>
              <rp id="osa2k"><strike id="osa2k"><u id="osa2k"></u></strike></rp>