Einzelnen Beitrag anzeigen

GroHae

Registriert seit: 19. Apr 2007
Ort: Nabburg
83 Beiträge
 
Delphi 2007 Enterprise
 
#1

Frage zum Strategy-Muster

  Alt 21. Jun 2007, 22:12
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
Grüße

Thomas
  Mit Zitat antworten Zitat