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:
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;
Aufruf dann:
Delphi-Quellcode:
var
Flugverhalten : TFliegMitFluegeln;
Ente : TEnte;
begin
Flugverhalten := TFliegMitFluegeln.Create;
Ente := TEnte.Create('Dagobert',Flugverhalten);
Ente.Anzeigen;
Ente.tuFliegen;
end;
klappt auch.
Wenn ich aber von Delphi2006 ein Stratergy Muster erstellen lasse bekomme ich:
Delphi-Quellcode:
// ???? 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;
was soll am Anfang die Deklaration?
IStrategy = interface;
und was hat es damit auf sich?
strict private var
///<link>aggregation</link>
Grüße
Thomas