Delphi 设计模式:《HeadFirst设计模式》Delphi7代码
1.主题与观察者
{《HeadFirst设计模式》之观察者模式 }
{ 主题与观察者 }
{ 编译工具 :Delphi7.0 }
{ 联系方式 :xshlife@163.com }
unit uWeatherReport;
interface
uses
Classes, SysUtils;
type
TObserver = class; { Forward声明,创建两个相互依赖的类 }
{ 抽象主题 }
TSubject = class(TObject)
procedure RegisterObserver(aObserver: TObserver); virtual; abstract;
procedure RemoveObserver (aObserver: TObserver); virtual; abstract;
procedure NotifyObserver; virtual; abstract;
end;
{ 具体主题 }
TWeatherData = class(TSubject)
private
FObservers: TList;
FTemp : Integer;
FHumidity : Integer;
FPresssure: Integer;
public
constructor Create;
destructor Destroy; override;
procedure RegisterObserver(aObserver: TObserver); override;
procedure RemoveObserver (aObserver: TObserver); override;
procedure NotifyObserver; override;
procedure MeasurementsChanged;
procedure SetMeasurements(aTemp, aHumidity, aPresssure: Integer);
end;
{**************************************************************************}
{ 抽象观察者 }
TObserver = class(TObject)
procedure UpDate(Temp, Humidity, Presssure: Integer); virtual; abstract;
procedure Display; virtual; abstract;
end;
{ 具体观察者 }
TCurrentConditionsDisplay = class(TObserver)
private
FTemp : Integer;
FHumidity : Integer;
FWeatherData: TSubject;
public
constructor Create(aWeatherData: TSubject);
destructor Destroy; override;
procedure UpDate(aTemp, aHumidity, aPresssure: Integer); override;
procedure Display; override;
end;
implementation
{ TWeatherData }
constructor TWeatherData.Create;
begin
FObservers := TList.Create;
end;
destructor TWeatherData.Destroy;
begin
FObservers.Clear;
FreeAndNil(FObservers);
inheri
相关文档:
第一章 DELPHI的原子世界
第二章 DELPHI与WIN32时空
第三章 多线程
第四章 接口
第五章 包
第六章 事件与消息
第七章 组织你的模块
第八章 探索数据库
第九章 多层体系结构
第十章 操作界面与操作逻辑
第十一章 面向对象数据库基础
第二章&n ......
本文是基于《GDI+在Delphi程序的应用 – Photoshop色相/饱和度/明度功能》一文的BASM实用性过程,有关实现原理可参见《GDI+ 在Delphi程序的应用 -- 图像饱和度调整》和《GDI+ 在Delphi程序的应用 -- 仿Photoshop的明度调整》,纯PAS实现代码和测试例子代码见《GDI+在Delphi程序的应用 – Phot ......
1. 抽象工厂的产品
{《HeadFirst设计模式》工厂模式之抽象工厂 }
{ 抽象工厂的产品 }
{ 编译工具:Delphi7.0 }
{ E-Mail :xshlife@163.com }
unit uPizzaIngredient;
interface
type
TDough = class(TObject)
end;
TThinCrustDough ......
1. 产品类
{《HeadFirst设计模式》工厂模式之简单工厂 }
{ 产品类 }
{ 编译工具 :Delphi7.0 }
{ 联系方式 :xshlife@163.com }
unit uProducts;
interface
type
TPizza = class(TObject)
public
procedure Prepare; virt ......
在一个单元中声明的多个类互为友元类
type
TMyClass = class
GUID: string;
Name: string;
bSex: Boolean;
Tel : string;
end;
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
Button2: TButton;
procedure Button2Click(Sender: TObject);
procedu ......