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

            圖片精選