AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Frage zum Strategy-Muster

Ein Thema von GroHae · begonnen am 21. Jun 2007 · letzter Beitrag vom 22. Jun 2007
Antwort Antwort
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
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Frage zum Strategy-Muster

  Alt 22. Jun 2007, 06:36
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.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
GroHae

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

Re: Frage zum Strategy-Muster

  Alt 22. Jun 2007, 07:10
OK alles klar,

Danke!
Grüße

Thomas
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:56 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