Delphi 设计模式:《HeadFirst设计模式》Delphi代码---模式小结之一个叫声接口和几只鸭子[转]...
生活随笔
收集整理的這篇文章主要介紹了
Delphi 设计模式:《HeadFirst设计模式》Delphi代码---模式小结之一个叫声接口和几只鸭子[转]...
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、一個叫聲接口和幾只鴨子
?
2、幾只鴨子實現了該叫聲接口。
?
?1
?2{《HeadFirst設計模式》Delphi代碼之模式小結?}
?3{?幾只鴨子實現了聲接口????????????????????}
?4{?編譯工具:Delphi2010?for?win32?????????}
?5{?E-Mail?:guzh-0417@163.com????????????}
?6
?7unit?uDuck;
?8
?9interface
10
11uses
12??uQuackable;
13
14type
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
35implementation
36
37{?TMallardDuck?}
38
39procedure?TMallardDuck.Quack;
40begin
41??Writeln('Quack');
42end;
43
44{?TRedHeadDuck?}
45
46procedure?TRedHeadDuck.Quack;
47begin
48??Writeln('Quack');
49end;
50
51{?TDuckCall?}
52
53procedure?TDuckCall.Quack;
54begin
55??Writeln('Kwak');
56end;
57
58{?TRubberDuck?}
59
60procedure?TRubberDuck.Quack;
61begin
62??Writeln('Squeak');
63end;
64
65end.
?
3、叫聲接口為鴨鳴器提供服務。叫聲接口與鴨鳴器的關系比與它的實現類更密切。
?
?1
?2{《HeadFirst設計模式》Delphi代碼之模式小結?}
?3{?鴨鳴模擬器?????????????????????????????}
?4{?編譯工具:Delphi2010?for?win32?????????}
?5{?E-Mail?:guzh-0417@163.com????????????}
?6
?7unit?uDuckSimulator;
?8
?9interface
10
11uses
12??uQuackable,?uDuck;
13
14type
15??TDuckSimulator?=?class(TObject)
16??private
17????procedure?Simulate(aDuck:?IQuackable);?overload;
18??public
19????procedure?Simulate;?overload;
20??end;
21
22implementation
23
24{?TDuckSimulator?}
25
26procedure?TDuckSimulator.Simulate(aDuck:?IQuackable);?{?此處交給多態處理?}
27begin
28??aDuck.Quack;
29end;
30
31procedure?TDuckSimulator.Simulate;
32var
33??aMallardDuck:?IQuackable;
34??aRedHeadDuck:?IQuackable;
35??aDuckCall???:?IQuackable;
36??aRubberDuck?:?IQuackable;
37begin
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;
58end;
59
60end.
?
4、客戶端。
?
?1
?2{《HeadFirst設計模式》Delphi代碼之模式小結?}
?3{?客戶端???????????????????????????????????}
?4{?編譯工具:Delphi2010?for?win32???????????}
?5{?E-Mail?:guzh-0417@163.com???????????????}
?6
?7program?pDuckSimulator;
?8
?9{$APPTYPE?CONSOLE}
10
11uses
12??uDuck?in?'uDuck.pas',
13??uDuckSimulator?in?'uDuckSimulator.pas',
14??uQuackable?in?'uQuackable.pas';
15
16var
17??aSimulator:?TDuckSimulator;
18
19begin
20??aSimulator?:=?TDuckSimulator.Create;
21
22??aSimulator.Simulate;
23
24??aSimulator.Free;
25
26??Readln;
27end.
?
5、運行結果:
?
轉載于:https://www.cnblogs.com/0x2D-0x22/p/4076468.html
總結
以上是生活随笔為你收集整理的Delphi 设计模式:《HeadFirst设计模式》Delphi代码---模式小结之一个叫声接口和几只鸭子[转]...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JZOJ5857 【NOIP提高组模拟A
- 下一篇: 关于idea修改当前使用的git账户的问