Delphi 设计模式:《HeadFirst设计模式》Delphi7代码---适配器模式之TurkeyAdapter[转]
2020-12-13 15:42
标签:des blog http io ar for sp div on 适配器模式的主要意图是对现有类的接口进行转换,以满足目标类的需求。其次,可以给目标类的接口添加新的行为(主要指方法)。这一点容易与装饰模式混淆。从意图方面来看,装饰模式不改变(通常指增加)接口中的行为(主要指方法),而是在原有行为(主要指方法)的基础上添加新的功能;从类结构方面来看,装饰模式中的装饰者既继承又组合被装饰者。类适配器同时继承现有类和目标类,对象适配器继承目标类组合现有类。 运行结果: Delphi 设计模式:《HeadFirst设计模式》Delphi7代码---适配器模式之TurkeyAdapter[转] 标签:des blog http io ar for sp div on 原文地址:http://www.cnblogs.com/0x2D-0x22/p/4076307.html![]()
1
2
{《HeadFirst设计模式》之适配器模式 }
3
{ 现有类 }
4
{ 编译工具:Delphi7.0 }
5
{ E-Mail :guzh-0417@163.com }
6
7
unit uAdaptee;
8
9
interface
10
11
type
12
TTurkey = class(TObject)
13
public
14
procedure Gobble; virtual; abstract;
15
procedure Fly; virtual; abstract;
16
end;
17
18
TWildTurkey = class(TTurkey)
19
public
20
procedure Gobble; override;
21
procedure Fly; override;
22
end;
23
24
implementation
25
26
{ TWildTurkey }
27
28
procedure TWildTurkey.Fly;
29
begin
30
Writeln(‘I‘‘m flying a short distance.‘);
31
end;
32
33
procedure TWildTurkey.Gobble;
34
begin
35
Writeln(‘Gobble gobble.‘);
36
end;
37
38
end.
![]()
1
2
{《HeadFirst设计模式》之适配器模式 }
3
{ 目标类 }
4
{ 编译工具:Delphi7.0 }
5
{ E-Mail :guzh-0417@163.com }
6
7
unit uTarget;
8
9
interface
10
11
type
12
TDuck = class(TObject)
13
public
14
procedure Quack; virtual; abstract;
15
procedure Fly; virtual; abstract;
16
end;
17
18
TMallarDuck = class(TDuck)
19
public
20
procedure Quack; override;
21
procedure Fly; override;
22
end;
23
24
implementation
25
26
{ TMallarDuck }
27
28
procedure TMallarDuck.Fly;
29
begin
30
Writeln(‘I‘‘m flying.‘);
31
end;
32
33
procedure TMallarDuck.Quack;
34
begin
35
Writeln(‘Quack.‘);
36
end;
37
38
end.
![]()
1
2
{《HeadFirst设计模式》之适配器模式 }
3
{ 适配器,转换现有类的接口 }
4
{ 编译工具:Delphi7.0 }
5
{ E-Mail :guzh-0417@163.com }
6
7
unit uAdapter;
8
9
interface
10
11
uses
12
uTarget, uAdaptee;
13
14
type
15
TTurkeyAdapter = class(TDuck)
16
private
17
FTurkey: TTurkey;
18
public
19
constructor Create(aTurkey: TTurkey);
20
procedure Quack; override;
21
procedure Fly; override;
22
end;
23
24
implementation
25
26
{ TTurkeyAdapter }
27
28
constructor TTurkeyAdapter.Create(aTurkey: TTurkey);
29
begin
30
FTurkey := aTurkey;
31
end;
32
33
procedure TTurkeyAdapter.Fly;
34
var
35
i: Integer;
36
begin
37
for i := 0 to 4 do
38
begin
39
FTurkey.Fly;
40
end;
41
end;
42
43
procedure TTurkeyAdapter.Quack;
44
begin
45
FTurkey.Gobble;
46
end;
47
48
end.
![]()
1
2
{《HeadFirst设计模式》之适配器模式 }
3
{ 客户端 }
4
{ 编译工具:Delphi7.0 }
5
{ E-Mail :guzh-0417@163.com }
6
7
program pDuckTestDrive;
8
9
{$APPTYPE CONSOLE}
10
11
uses
12
SysUtils,
13
uAdaptee in ‘uAdaptee.pas‘,
14
uAdapter in ‘uAdapter.pas‘,
15
uTarget in ‘uTarget.pas‘;
16
17
var
18
Duck : TMallarDuck;
19
Turkey: TWildTurkey;
20
TurkeyAdapter: TTurkeyAdapter;
21
22
procedure TestDuck(aDuck: TDuck);
23
begin
24
aDuck.Quack;
25
aDuck.Fly;
26
end;
27
28
begin
29
Duck := TMallarDuck.Create;
30
Turkey := TWildTurkey.Create;
31
TurkeyAdapter := TTurkeyAdapter.Create(Turkey);
32
33
Writeln(‘The turkey says:‘);
34
Turkey.Gobble;
35
Turkey.Fly;
36
37
Writeln;
38
39
Writeln(‘The duck says:‘);
40
TestDuck(Duck);
41
42
Writeln;
43
44
Writeln(‘The turkeyAdapter says:‘);
45
TestDuck(TurkeyAdapter);
46
47
FreeAndNil(Duck);
48
FreeAndNil(Turkey);
49
FreeAndNil(TurkeyAdapter);
50
51
Readln;
52
end.

文章标题:Delphi 设计模式:《HeadFirst设计模式》Delphi7代码---适配器模式之TurkeyAdapter[转]
文章链接:http://soscw.com/index.php/essay/35345.html