Delphi 设计模式:《HeadFirst设计模式》Delphi代码
一、一个叫声接口和几只鸭子
1、从一个叫声接口开始
{《HeadFirst设计模式》Delphi代码之模式小结 }
{ 一个叫声接口 }
{ 编译工具:Delphi2010 for win32 }
{ E-Mail :xshlife@163.com }
unit uQuackable;
interface
type
IQuackable = interface(IInterface)
procedure Quack;
end;
implementation
end.
2、几只鸭子实现了该叫声接口。
{《HeadFirst设计模式》Delphi代码之模式小结 }
{ 几只鸭子实现了声接口 }
{ 编译工具:Delphi2010 for win32 }
{ E-Mail :xshlife@163.com }
unit uDuck;
interface
uses
uQuackable;
type
TMallardDuck = class(TInterfacedObject, IQuackable)
public
procedure Quack;
end;
TRedHeadDuck = class(TInterfacedObject, IQuackable)
public
procedure Quack;
end;
TDuckCall = class(TInterfacedObject, IQuackable)
public
procedure Quack;
end;
TRubberDuck = class(TInterfacedObject, IQuackable)
public
procedure Quack;
end;
implementation
{ TMallardDuck }
procedure TMallardDuck.Quack;
begin
Writeln('Quack');
end;
{ TRedHeadDuck }
procedure TRedHeadDuck.Quack;
begin
Writeln('Quack');
end;
{ TDuckCall }
procedure TDuckCall.Quack;
begin
Writeln('Kwak');
end;
{ TRubberDuck }
procedure TRubberDuck.Quack;
begin
Writeln('Squeak');
end;
end.
3、叫声接口为鸭鸣器提供服务。叫声接口与鸭鸣器的关系比与它的实现类更密切。
{《HeadFirst设计模式》Delphi代码之模式小结 }
{ 鸭鸣模拟器 }
{ 编译工具:Delphi2010 for win32 }
{ E-Mail :xshlife@163.com }
unit uDuckSimulator;
interface
uses
uQuackable, uDuck;
type
TDuckSimulator = class(TObject)
private
procedure Simulate(aDuck: IQuackable); overload;
public
procedure Simulate; overload;
end;
implementation
{ TDuck
相关文档:
提起DLL您一定不会陌生,在Windows中有着大量的以DLL为后缀的文件,它们是保证Windows正常运行和维护升级的重要保证。(举个例子,笔者的Win95 System目录下尽有500多个DLL文件。)其实,DLL是一种特殊的可执行文件。说它特殊主要是因为一般它都不能直接运行,需要宿主程序比如*.EXE程序或其他DLL ......
第一章 DELPHI的原子世界
第二章 DELPHI与WIN32时空
第三章 多线程
第四章 接口
第五章 包
第六章 事件与消息
第七章 组织你的模块
第八章 探索数据库
第九章 多层体系结构
第十章 操作界面与操作逻辑
第十一章 面向对象数据库基础
第二章&n ......
第一章 DELPHI的原子世界
第二章 DELPHI与WIN32时空
第三章 多线程
第四章 接口
第五章 包
第六章 事件与消息
第七章 组织你的模块
第八章 探索数据库
第九章 多层体系结构
第十章 操作界面与操作逻辑
第十一章 面向对象数据库基础
空 ......
第一章 DELPHI的原子世界
第二章 DELPHI与WIN32时空
第三章 多线程
第四章 接口
第五章 包
第六章 事件与消息
第七章 组织你的模块
第八章 探索数据库
第九章 多层体系结构
第十章 操作界面与操作逻辑
第十一章 面向对象数据库基础
空 ......
Delphi2010集成了fastMM,这回大家调试程序是的时候可以方便地检查内存泄露了。
使用方法如下:
在project中,添加一行 ReportMemoryLeaksOnShutdown := DebugHook<>0;
DebugHook<>0 目的是保证单独运行exe文件不会弹出内存泄露框,源码可以不用注释掉此行
program Project1;
uses
Forms,
......