丰满人妻一区二区三区无码AV|国产乱色国产精品免费视频|国产精品一区二区不卡的视频|2020精品国产福利在线观看香蕉

    1. <rp id="2o2at"><nav id="2o2at"></nav></rp>
      
      

      <rt id="2o2at"></rt>
      <ruby id="2o2at"><nav id="2o2at"></nav></ruby>

    2. <rp id="2o2at"><meter id="2o2at"></meter></rp>

        <tt id="2o2at"><form id="2o2at"></form></tt>

      1. <source id="2o2at"></source>

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

          圖片精選

          1. <rp id="2o2at"><nav id="2o2at"></nav></rp>
            
            

            <rt id="2o2at"></rt>
            <ruby id="2o2at"><nav id="2o2at"></nav></ruby>

          2. <rp id="2o2at"><meter id="2o2at"></meter></rp>

              <tt id="2o2at"><form id="2o2at"></form></tt>

            1. <source id="2o2at"></source>