Delphi 设计模式:《HeadFirst设计模式》Delphi7代码
1. 复杂的子系统
unit uSubObject;
interface
type
{ TAmplifier与TTuner,TCDPlayer,TDVDPlayer相互依赖。 }
{ 在TTuner等的简单实现时用不到对TAmplifier的引用, }
{ 但现实生活中就应该让TAmplifier提供服务,所以这里保留了。 }
{ TProjector对TDVDPlayer的引用也是同样道理。 }
{ 前置TAmplifier也可以,把TAmplifier的声明放在TTuner等声明的后面 }
TTuner = class;
TCDPlayer = class;
TDVDPlayer = class;
TAmplifier = class(TObject)
private
FTuner: TTuner;
FCD : TCDPlayer;
FDVD: TDVDPlayer;
FDescription: String;
public
constructor Create(aDescription: String);
procedure Open;
procedure Off;
procedure SetStereoSound;
procedure SetSurroundSound;
procedure SetVolume(aLevel: Integer);
procedure SetTuner (aTuner: TTuner);
procedure SetCD (aCD : TCDPlayer);
procedure SetDVD(aDVD: TDVDPlayer);
function ToString: String;
end;
TTuner = class(TObject)
private
FAmplifier: TAmplifier;
FDescription: String;
FFrequency: Double;
public
constructor Create(aDescription: String; aAmplifier: TAmplifier);
procedure Open;
procedure Off;
procedure SetAm;
procedure SetFm;
procedure SetFrequency(aFrequency: Double);
function ToString: String;
end;
TCDPlayer = class(TObject)
private
FAmplifier: TAmplifier;
FDescription: String;
FCurrentTrack: Integer;
FTitle: String;
public
constructor Create(aDescription: String; aAmplifier: TAmplifier);
procedure Open;
procedure Off;
procedure Eject;
procedure Play(aTitle: String ); overload;
procedure Play(aTrack: Integer); overload;
procedure Stop;
procedure Pause;
function ToString: String;
end;
TDVDPlayer = class(TObject)
private
FAmplifier: TAmplifier;
FDescription:
相关文档:
本文的线性亮度/对比度调整方法是在《改进的图像线性亮度调整方法》一文中线性亮度调整方法与《Delphi图像处理 -- Photoshop图像亮度/对比度调整》中的对比度调整方法基础上形成的,其原理和特点可参见这2篇文章:
过程定义:
// 线性调整亮度,Value亮度值
procedure ImageL ......
一、一个叫声接口和几只鸭子
1、从一个叫声接口开始
{《HeadFirst设计模式》Delphi代码之模式小结 }
{ 一个叫声接口 }
{ 编译工具:Delphi2010 for win32 }
{ E-Mail :xshlife@163.com }
unit uQuackable;
interface
type
IQuackable = in ......
1. 产品类
{《HeadFirst设计模式》工厂模式之简单工厂 }
{ 产品类 }
{ 编译工具 :Delphi7.0 }
{ 联系方式 :xshlife@163.com }
unit uProducts;
interface
type
TPizza = class(TObject)
public
procedure Prepare; virt ......
模板方法模式定义了一个算法骨架,允许子类对算法的某个或某些步骤进行重写(override)。
1.CoffeineBeverageWithHook
{《HeadFirst设计模式》之模板方法模式 }
{ 编译工具: Delphi7.0 }
{ E-Mail : xshlife@163.com }
unit uCoffeineBeverageWithHook;
interface
uses
SysUti ......
1.策略类
{《HeadFirst设计模式》之策略模式 }
{ 本单元中的类为策略类 }
{ 编译工具: Delphi7.0 }
{ E-Mail : xshlife@163.com }
unit uStrategy;
interface
type
{飞行接口,及其实现类 }
IFlyBehavior = Interface(IInterface)
procedure Fly;
......