![]() |
Frage zum Strategy-Muster
Hallo zusammen,
ich Arbeite mich gerade in Entwurdsmuster ein und nutze das Buch "Entwursmuster von Kopf bis Fuß". Mit viel Mühe habe ich dann folgendes geschaft:
Delphi-Quellcode:
Aufruf dann:type IFlugVerhalten = Interface procedure fliegen; end; TEnte = class(TObject) private FFlugVerhalten : IFlugVerhalten; Name : string; public procedure tuFliegen; procedure Anzeigen; procedure SetFlugverhalten(ActFlugVerhalten:IFlugVerhalten); constructor Create(iName:string;ActFlugVerhalten:IFlugVerhalten); end; TFliegMitFluegeln = class(TInterfacedObject, IFlugVerhalten) procedure fliegen; end; TFliegenVerlernt = class(TInterfacedObject, IFlugVerhalten) procedure fliegen; end;
Delphi-Quellcode:
klappt auch.
var
Flugverhalten : TFliegMitFluegeln; Ente : TEnte; begin Flugverhalten := TFliegMitFluegeln.Create; Ente := TEnte.Create('Dagobert',Flugverhalten); Ente.Anzeigen; Ente.tuFliegen; end; Wenn ich aber von Delphi2006 ein Stratergy Muster erstellen lasse bekomme ich:
Delphi-Quellcode:
was soll am Anfang die Deklaration?// ???? Was soll das?? IStrategy = interface; // entspricht TEnte TContext = class strict private var ///<link>aggregation</link> FStrategy:IStrategy; public constructor Create(AStrategy :IStrategy); procedure ContextRequest; end; // entspricht IFlugVerhalten IStrategy = interface procedure Sample; end; // entspricht TFliegMitFluegeln TConcreteStrategy = class(TInterfacedObject, IStrategy) public procedure Sample; end; IStrategy = interface; und was hat es damit auf sich? strict private var ///<link>aggregation</link> Grüße Thomas |
Re: Frage zum Strategy-Muster
Die erste Deklaration 'IStrategy = Interface' ist eine sog. forward - Deklaration, d.h. erstmal wird bekannt gemacht, das IStrategy ein Interface ist. Welches, ist egal. Danach wird eine Variable dieses Types im 'strict private' Bereich der Klasse deklariert.
|
Re: Frage zum Strategy-Muster
OK alles klar,
Danke! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz