Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Frage zum Strategy-Muster (https://www.delphipraxis.net/94472-frage-zum-strategy-muster.html)

GroHae 21. Jun 2007 22:12


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:

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

alzaimar 22. Jun 2007 06:36

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.

GroHae 22. Jun 2007 07:10

Re: Frage zum Strategy-Muster
 
OK alles klar,

Danke!


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz