源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Delphi Command模式

  • 时间:2022-09-01 15:15 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Delphi Command模式
这个例子还是比较好理解的, 所以只给出代码. 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.  
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部