庞大资源库的计算机教程网站!
设为首页
加入收藏
总编信箱
投稿或申请专栏请先 [登 陆]
首页 操作系统 程序设计 图形图像 媒体动画 机械电子 WEB开发 数 据 库 办公系列 路由技术 网络原理 网络应用
认证考试 安全技术
首页>程序设计>Delphi语言>实例分析>正文
资料搜索
Google搜索
Google
返回上级列表

推荐文章

快速保存网页中所有图片的方法
Windows中让光驱巧妙“隐身”技
防范非法用户入侵Win 2000/XP系
两款比较典型的ASP木马防范方法
有关表格边框的css语法整理
Windows XP中可以被禁用的服务
SQL Server导出导入数据方法
Javascript所有对象的属性的获
网页(HTML)中的特殊字符
与篮球共舞,尽显模式本色
QQ病毒的手工清除方法
Photoshop为极品美女打造性感睫
天衣无缝:IIS与PHP水火也相容
SQL Server存储过程编写和优化

Command模式

 作者:本站收集   日期:2005-3-14
字号选择〖 〗/ 双击滚屏 单击停止   
最近学习模式入迷, 所以就想写一篇关于模式的文章,这篇文章是<<Java 与模式>> (阎宏 著)里的一个例子, 我把它改成Delphi的.第一次写东西, 有不足之处希望大家可以谅解.

这个例子还是比较好理解的, 所以只给出代码.

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.

上一篇:一个值得大家来考虑的DLL问题    下一篇:只允许建立一次子窗体的MDI程序  
[发送给好友]  [关闭窗口]  [返回顶部]   转载请注明来源:www.it00.com   
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
责任编辑: 原点 投稿作者: 本站收集
信息来源: 网络 录入时间: 2005-3-14
关于我们 - 广告服务 - 版权申明 - 网站地图 - 联系方式 - 总编信箱 - 会员投稿