HeadFirst设计模式——delphi版


unit Duck;

interface
type
    IDUCK = interface
    ['{E38F898D-2EA0-4995-8F8C-1886752E6BFB}']

    procedure quack;
    procedure fly;
end;

type ITurkey = interface
   ['{FB98F4F2-2243-4450-AA5C-9114A2E088E5}']
   	procedure gobble;
	  procedure fly;
end;

implementation

end.

unit WildTurkey;

interface
uses Duck;
type
  TWildTurkey = class(TInterfacedObject, ITurkey)
	public
    procedure gobble; {
		System.out.println("Gobble gobble");
	}

	  procedure fly; {
		System.out.println("I'm flying a short distance");
	}

  end;
implementation

  procedure TWildTurkey.gobble;
  begin
     writeln('Gobble gobble');
  end;


  procedure TWildTurkey.fly;
  begin
    writeln('I am flying a short distance');
  end;


end.


program DuckTestDrive;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  Duck in 'Duck.pas',
  DuckAdapter in 'DuckAdapter.pas',
  WildTurkey in 'WildTurkey.pas',
  TurkeyAdapter in 'TurkeyAdapter.pas',
  MallardDuck in 'MallardDuck.pas';

var
  gDuck: TMallardDuck;
  gTurkey : TWildTurkey;
  gTurkeyAdapter: IDUCK;
  gI: Integer;

  procedure testDuck(aDuck: IDuck);
  begin
    aDuck.quack;
		aDuck.fly;
  end;


begin
  try
    { TODO -oUser -cConsole Main : Insert code here }
     gDuck := TMallardDuck.Create;
		 gTurkey := TWildTurkey.Create;
     gTurkeyAdapter := TTurkeyAdapter.Create(gTurkey);

		 writeln('The Turkey says...');
		 gturkey.gobble();
		 gturkey.fly();

		 writeln(#10'The Duck says...');
		 testDuck(gduck);

		 writeln(#10'The TurkeyAdapter says...');
		 testDuck(gTurkeyAdapter);

    Readln;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值