这个例子还是比较好理解的, 所以只给出代码.
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.
Delphi Command模式_Delphi
时间: 2024-10-22 07:28:21
Delphi Command模式_Delphi的相关文章
设计模式的解析和实现(C++)之十四-Command模式
作用: 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作. UML结构图: 解析: Comnand模式的思想是把命令封装在一个类中,就是这里的Command基类,同时把接收对象也封装在一个类中就是这里的Receiver类中,由调用这个命令的类也就是这里的Invoker类来调用.其实,如果弄清楚了Command模式的原理,就会发现其实它和注册回调函数的原理是很相似的,而在面向过程的设计中的回调函数其实和这里的Command类的作用是一
设计模式学习笔记(十四)—Command模式
一.Command模式定义: 将一个请求封装为一个对象,从而使你不同的请求对客户进行参数化:对请求排队或记录请求日志,以及支持可撤销的操作. 二.模式解说 Commad模式是一种对象行为模式,它可以对发送者(sender)和接收者(receiver)完全解耦(decoupling).("发送者" 是请求操作的对象,"接收者" 是接收请求并执行某操作的对象.有了 "解耦",发送者对接收者的接口一无所知.)这里,"请求"(requ
Java设计模式之命令模式(Command模式)介绍_java
Command模式是最让我疑惑的一个模式,我在阅读了很多代码后,才感觉隐约掌握其大概原理,我认为理解设计模式最主要是掌握起原理构造,这样才对自己实际编程有指导作用.Command模式实际上不是个很具体,规定很多的模式,正是这个灵活性,让人有些confuse. Command定义 不少Command模式的代码都是针对图形界面的,它实际就是菜单命令,我们在一个下拉菜单选择一个命令时,然后会执行一些动作. 将这些命令封装成在一个类中,然后用户(调用者)再对这个类进行操作,这就是Command模式,换句
用Javascript实现Command模式
command|javascript 这个实现实在太简单了---动态语言就是好使啊~先定义一个Command对象,代码如下: function Command(obj) { var commandObj = obj; // save the reference of working object var oldProp = new Object(); // save old properties // set new properties and save
ListView 百分比进度条(delphi版)_Delphi
在看代码之前先给大家附上效果图: 废话不多说了,直接给大家贴代码了. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, ImgList; type TForm1 = class(TForm) btn1: TButton; lv1: TListView; trckbr1: TTrackBa
Command 模式
将一个请求封装成为一个对象,从而使你可用不同的对象对客户进行参数化: 对请求排队或记录请求日志,以及支持可撤消的操作. 当处理菜单时,若直接关联上函数,则会导致紧耦合.当将菜单某个功能与一个具体的命令类关联上时,则会相对清晰.也便于扩展.
022_《Delphi模式编程》
<Delphi模式编程> Delphi 教程 系列书籍 (022) <Delphi模式编程> 网友(邦)整理 EMail: shuaihj@163.com 下载地址: Pdf 作者: 刘艺 丛书名: Borland/Inprise核心技术丛书 出版社:机械工业出版社 ISBN:7111149491 上架时间:2004-9-11 出版日期:2004 年9月 开本:16开 页码:509 版次:1-1 内容简介 <delphi模式编程>是一本delphi程序员的模式入门和
解读设计模式----命令模式(Command Pattern)
本文与作者原文有一定的偏差,其中加入了一部分是个人看法,详细请查看作者原文.*** 原文连接http://www.dofactory.com/Patterns/PatternCommand.aspx 命令模式意图: GOF 在<设计模式>一书中阐述其意图:"将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化:对请求排队或记录请求日志,以及支持可取消的操作."这里所谓的"不同的请求"也既意味着请求可能发生的变化,是一个可能扩展的功能点. 命令
.NET设计模式(17):命令模式(Command Pattern)
意图 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化:对请求排队或记录请求日志,以及支持可撤消的操作.[GOF <设计模式>] 结构图 Command模式结构图如下: 图1 Command模式结构图 生活中的例子 Command模式将一个请求封装为一个对象,从而使你可以使用不同的请求对客户进行参数化.用餐时的账单是Command模式的一个例子.服务员接受顾客的点单,把它记在账单上封装.这个点单被排队等待烹饪.注意这里的"账单"是不依赖于菜单的,它可以被不同