Delphi 设计模式:《HeadFirst设计模式》Delphi代码---模式小结之一个叫声接口和几只鸭子[转]
2020-12-13 15:44
标签:des blog http io ar os for sp div 一、一个叫声接口和几只鸭子 1、从一个叫声接口开始。 2、几只鸭子实现了该叫声接口。 3、叫声接口为鸭鸣器提供服务。叫声接口与鸭鸣器的关系比与它的实现类更密切。 4、客户端。 5、运行结果: Delphi 设计模式:《HeadFirst设计模式》Delphi代码---模式小结之一个叫声接口和几只鸭子[转] 标签:des blog http io ar os for sp div 原文地址:http://www.cnblogs.com/0x2D-0x22/p/4076468.html![]()
1
2
{《HeadFirst设计模式》Delphi代码之模式小结 }
3
{ 一个叫声接口 }
4
{ 编译工具:Delphi2010 for win32 }
5
{ E-Mail :guzh-0417@163.com }
6
7
unit uQuackable;
8
9
interface
10
11
type
12
IQuackable = interface(IInterface)
13
procedure Quack;
14
end;
15
16
implementation
17
18
end.
19
![]()
1
2
{《HeadFirst设计模式》Delphi代码之模式小结 }
3
{ 几只鸭子实现了声接口 }
4
{ 编译工具:Delphi2010 for win32 }
5
{ E-Mail :guzh-0417@163.com }
6
7
unit uDuck;
8
9
interface
10
11
uses
12
uQuackable;
13
14
type
15
TMallardDuck = class(TInterfacedObject, IQuackable)
16
public
17
procedure Quack;
18
end;
19
20
TRedHeadDuck = class(TInterfacedObject, IQuackable)
21
public
22
procedure Quack;
23
end;
24
25
TDuckCall = class(TInterfacedObject, IQuackable)
26
public
27
procedure Quack;
28
end;
29
30
TRubberDuck = class(TInterfacedObject, IQuackable)
31
public
32
procedure Quack;
33
end;
34
35
implementation
36
37
{ TMallardDuck }
38
39
procedure TMallardDuck.Quack;
40
begin
41
Writeln(‘Quack‘);
42
end;
43
44
{ TRedHeadDuck }
45
46
procedure TRedHeadDuck.Quack;
47
begin
48
Writeln(‘Quack‘);
49
end;
50
51
{ TDuckCall }
52
53
procedure TDuckCall.Quack;
54
begin
55
Writeln(‘Kwak‘);
56
end;
57
58
{ TRubberDuck }
59
60
procedure TRubberDuck.Quack;
61
begin
62
Writeln(‘Squeak‘);
63
end;
64
65
end.
![]()
1
2
{《HeadFirst设计模式》Delphi代码之模式小结 }
3
{ 鸭鸣模拟器 }
4
{ 编译工具:Delphi2010 for win32 }
5
{ E-Mail :guzh-0417@163.com }
6
7
unit uDuckSimulator;
8
9
interface
10
11
uses
12
uQuackable, uDuck;
13
14
type
15
TDuckSimulator = class(TObject)
16
private
17
procedure Simulate(aDuck: IQuackable); overload;
18
public
19
procedure Simulate; overload;
20
end;
21
22
implementation
23
24
{ TDuckSimulator }
25
26
procedure TDuckSimulator.Simulate(aDuck: IQuackable); { 此处交给多态处理 }
27
begin
28
aDuck.Quack;
29
end;
30
31
procedure TDuckSimulator.Simulate;
32
var
33
aMallardDuck: IQuackable;
34
aRedHeadDuck: IQuackable;
35
aDuckCall : IQuackable;
36
aRubberDuck : IQuackable;
37
begin
38
try
39
{ 创建鸭鸣实例 }
40
aMallardDuck := TMallardDuck.Create;
41
aRedHeadDuck := TRedHeadDuck.Create;
42
aDuckCall := TDuckCall.Create;
43
aRubberDuck := TRubberDuck.Create;
44
45
Writeln(‘Duck Simulator‘);
46
47
{ 模拟鸭鸣 }
48
Simulate(aMallardDuck);
49
Simulate(aRedHeadDuck);
50
Simulate(aDuckCall);
51
Simulate(aRubberDuck );
52
finally
53
aMallardDuck := nil;
54
aRedHeadDuck := nil;
55
aDuckCall := nil;
56
aRubberDuck := nil;
57
end;
58
end;
59
60
end.
![]()
1
2
{《HeadFirst设计模式》Delphi代码之模式小结 }
3
{ 客户端 }
4
{ 编译工具:Delphi2010 for win32 }
5
{ E-Mail :guzh-0417@163.com }
6
7
program pDuckSimulator;
8
9
{$APPTYPE CONSOLE}
10
11
uses
12
uDuck in ‘uDuck.pas‘,
13
uDuckSimulator in ‘uDuckSimulator.pas‘,
14
uQuackable in ‘uQuackable.pas‘;
15
16
var
17
aSimulator: TDuckSimulator;
18
19
begin
20
aSimulator := TDuckSimulator.Create;
21
22
aSimulator.Simulate;
23
24
aSimulator.Free;
25
26
Readln;
27
end.

下一篇:Java 之 函数式编程
文章标题:Delphi 设计模式:《HeadFirst设计模式》Delphi代码---模式小结之一个叫声接口和几只鸭子[转]
文章链接:http://soscw.com/essay/35384.html