码迷,mamicode.com
首页 > Windows程序 > 详细

Delphi 设计模式:《HeadFirst设计模式》Delphi7代码---适配器模式之TurkeyAdapter[转]

时间:2014-11-05 16:23:53      阅读:378      评论:0      收藏:0      [点我收藏+]

标签:des   blog   http   io   ar   for   sp   div   on   

      适配器模式的主要意图是对现有类的接口进行转换,以满足目标类的需求。其次,可以给目标类的接口添加新的行为(主要指方法)。这一点容易与装饰模式混淆。从意图方面来看,装饰模式不改变(通常指增加)接口中的行为(主要指方法),而是在原有行为(主要指方法)的基础上添加新的功能;从类结构方面来看,装饰模式中的装饰者既继承又组合被装饰者。类适配器同时继承现有类和目标类,对象适配器继承目标类组合现有类。

 

bubuko.com,布布扣
 1bubuko.com,布布扣
 2bubuko.com,布布扣{《HeadFirst设计模式》之适配器模式 }
 3bubuko.com,布布扣{ 现有类                         }
 4bubuko.com,布布扣{ 编译工具:Delphi7.0             }
 5bubuko.com,布布扣{ E-Mail :guzh-0417@163.com     } 
 6bubuko.com,布布扣
 7bubuko.com,布布扣unit uAdaptee;
 8bubuko.com,布布扣
 9bubuko.com,布布扣interface
10bubuko.com,布布扣
11bubuko.com,布布扣type
12bubuko.com,布布扣  TTurkey = class(TObject)
13bubuko.com,布布扣  public
14bubuko.com,布布扣    procedure Gobble; virtual; abstract;
15bubuko.com,布布扣    procedure Fly;    virtual; abstract;
16bubuko.com,布布扣  end;
17bubuko.com,布布扣
18bubuko.com,布布扣  TWildTurkey = class(TTurkey)
19bubuko.com,布布扣  public
20bubuko.com,布布扣    procedure Gobble; override;
21bubuko.com,布布扣    procedure Fly;    override;
22bubuko.com,布布扣  end;
23bubuko.com,布布扣
24bubuko.com,布布扣implementation
25bubuko.com,布布扣
26bubuko.com,布布扣{ TWildTurkey }
27bubuko.com,布布扣
28bubuko.com,布布扣procedure TWildTurkey.Fly;
29bubuko.com,布布扣begin
30bubuko.com,布布扣  Writeln(‘I‘‘m flying a short distance.‘);
31bubuko.com,布布扣end;
32bubuko.com,布布扣
33bubuko.com,布布扣procedure TWildTurkey.Gobble;
34bubuko.com,布布扣begin
35bubuko.com,布布扣  Writeln(‘Gobble gobble.‘);
36bubuko.com,布布扣end;
37bubuko.com,布布扣
38bubuko.com,布布扣end.

      

bubuko.com,布布扣
 1bubuko.com,布布扣
 2bubuko.com,布布扣{《HeadFirst设计模式》之适配器模式 }
 3bubuko.com,布布扣{ 目标类                         }
 4bubuko.com,布布扣{ 编译工具:Delphi7.0             }
 5bubuko.com,布布扣{ E-Mail :guzh-0417@163.com     }
 6bubuko.com,布布扣
 7bubuko.com,布布扣unit uTarget;
 8bubuko.com,布布扣
 9bubuko.com,布布扣interface
10bubuko.com,布布扣
11bubuko.com,布布扣type
12bubuko.com,布布扣  TDuck = class(TObject)
13bubuko.com,布布扣  public
14bubuko.com,布布扣    procedure Quack; virtual; abstract;
15bubuko.com,布布扣    procedure Fly;   virtual; abstract;
16bubuko.com,布布扣  end;
17bubuko.com,布布扣
18bubuko.com,布布扣  TMallarDuck = class(TDuck)
19bubuko.com,布布扣  public
20bubuko.com,布布扣    procedure Quack; override;
21bubuko.com,布布扣    procedure Fly;   override;
22bubuko.com,布布扣  end;
23bubuko.com,布布扣
24bubuko.com,布布扣implementation
25bubuko.com,布布扣
26bubuko.com,布布扣{ TMallarDuck }
27bubuko.com,布布扣
28bubuko.com,布布扣procedure TMallarDuck.Fly;
29bubuko.com,布布扣begin
30bubuko.com,布布扣  Writeln(‘I‘‘m flying.‘);
31bubuko.com,布布扣end;
32bubuko.com,布布扣
33bubuko.com,布布扣procedure TMallarDuck.Quack;
34bubuko.com,布布扣begin
35bubuko.com,布布扣  Writeln(‘Quack.‘);
36bubuko.com,布布扣end;
37bubuko.com,布布扣
38bubuko.com,布布扣end.

 

bubuko.com,布布扣
 1bubuko.com,布布扣
 2bubuko.com,布布扣{《HeadFirst设计模式》之适配器模式 }
 3bubuko.com,布布扣{ 适配器,转换现有类的接口         }
 4bubuko.com,布布扣{ 编译工具:Delphi7.0            }
 5bubuko.com,布布扣{ E-Mail :guzh-0417@163.com    }
 6bubuko.com,布布扣
 7bubuko.com,布布扣unit uAdapter;
 8bubuko.com,布布扣
 9bubuko.com,布布扣interface
10bubuko.com,布布扣
11bubuko.com,布布扣uses
12bubuko.com,布布扣  uTarget, uAdaptee;
13bubuko.com,布布扣
14bubuko.com,布布扣type
15bubuko.com,布布扣  TTurkeyAdapter = class(TDuck)
16bubuko.com,布布扣  private
17bubuko.com,布布扣    FTurkey: TTurkey;
18bubuko.com,布布扣  public
19bubuko.com,布布扣    constructor Create(aTurkey: TTurkey);
20bubuko.com,布布扣    procedure Quack; override;
21bubuko.com,布布扣    procedure Fly;   override;
22bubuko.com,布布扣  end;
23bubuko.com,布布扣
24bubuko.com,布布扣implementation
25bubuko.com,布布扣
26bubuko.com,布布扣{ TTurkeyAdapter }
27bubuko.com,布布扣
28bubuko.com,布布扣constructor TTurkeyAdapter.Create(aTurkey: TTurkey);
29bubuko.com,布布扣begin
30bubuko.com,布布扣  FTurkey := aTurkey;
31bubuko.com,布布扣end;
32bubuko.com,布布扣
33bubuko.com,布布扣procedure TTurkeyAdapter.Fly;
34bubuko.com,布布扣var
35bubuko.com,布布扣  i: Integer;
36bubuko.com,布布扣begin
37bubuko.com,布布扣  for i := 0 to 4 do
38bubuko.com,布布扣  begin
39bubuko.com,布布扣    FTurkey.Fly;
40bubuko.com,布布扣  end;
41bubuko.com,布布扣end;
42bubuko.com,布布扣
43bubuko.com,布布扣procedure TTurkeyAdapter.Quack;
44bubuko.com,布布扣begin
45bubuko.com,布布扣  FTurkey.Gobble;
46bubuko.com,布布扣end;
47bubuko.com,布布扣
48bubuko.com,布布扣end.

 

bubuko.com,布布扣
 1bubuko.com,布布扣
 2bubuko.com,布布扣{《HeadFirst设计模式》之适配器模式 }
 3bubuko.com,布布扣{ 客户端                         }
 4bubuko.com,布布扣{ 编译工具:Delphi7.0             }
 5bubuko.com,布布扣{ E-Mail :guzh-0417@163.com     }
 6bubuko.com,布布扣
 7bubuko.com,布布扣program pDuckTestDrive;
 8bubuko.com,布布扣
 9bubuko.com,布布扣{$APPTYPE CONSOLE}
10bubuko.com,布布扣
11bubuko.com,布布扣uses
12bubuko.com,布布扣  SysUtils,
13bubuko.com,布布扣  uAdaptee in ‘uAdaptee.pas‘,
14bubuko.com,布布扣  uAdapter in ‘uAdapter.pas‘,
15bubuko.com,布布扣  uTarget in ‘uTarget.pas‘;
16bubuko.com,布布扣  
17bubuko.com,布布扣var
18bubuko.com,布布扣  Duck  : TMallarDuck;
19bubuko.com,布布扣  Turkey: TWildTurkey;
20bubuko.com,布布扣  TurkeyAdapter: TTurkeyAdapter;
21bubuko.com,布布扣
22bubuko.com,布布扣procedure TestDuck(aDuck: TDuck);
23bubuko.com,布布扣begin
24bubuko.com,布布扣  aDuck.Quack;
25bubuko.com,布布扣  aDuck.Fly;
26bubuko.com,布布扣end;
27bubuko.com,布布扣
28bubuko.com,布布扣begin
29bubuko.com,布布扣  Duck   := TMallarDuck.Create;
30bubuko.com,布布扣  Turkey := TWildTurkey.Create;
31bubuko.com,布布扣  TurkeyAdapter := TTurkeyAdapter.Create(Turkey);
32bubuko.com,布布扣
33bubuko.com,布布扣  Writeln(‘The turkey says:‘);
34bubuko.com,布布扣  Turkey.Gobble;
35bubuko.com,布布扣  Turkey.Fly;
36bubuko.com,布布扣
37bubuko.com,布布扣  Writeln;
38bubuko.com,布布扣
39bubuko.com,布布扣  Writeln(‘The duck says:‘);
40bubuko.com,布布扣  TestDuck(Duck);
41bubuko.com,布布扣
42bubuko.com,布布扣  Writeln;
43bubuko.com,布布扣
44bubuko.com,布布扣  Writeln(‘The turkeyAdapter says:‘);
45bubuko.com,布布扣  TestDuck(TurkeyAdapter);
46bubuko.com,布布扣
47bubuko.com,布布扣  FreeAndNil(Duck);
48bubuko.com,布布扣  FreeAndNil(Turkey);
49bubuko.com,布布扣  FreeAndNil(TurkeyAdapter);
50bubuko.com,布布扣
51bubuko.com,布布扣  Readln;
52bubuko.com,布布扣end.

 

运行结果:

bubuko.com,布布扣

 

Delphi 设计模式:《HeadFirst设计模式》Delphi7代码---适配器模式之TurkeyAdapter[转]

标签:des   blog   http   io   ar   for   sp   div   on   

原文地址:http://www.cnblogs.com/0x2D-0x22/p/4076307.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!