Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Sir Rufo,
5. Sep 2015
Eine Abstract Factory hast du doch auch mit IFillConcreteData.
Wenn du dort nun noch Methoden einführst, die eine Instanz erschaffen
IFillConcreteData = interface
function BuildPDF( AData: TConcreteData ): IPDFDocument;
function BuildXLS( AData: TConcreteData ): IXLSDocument;
end;
dann hast du deine Factory. Die konkreten Factories erzeugen dann die entsprechende Formular-Version.
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Sir Rufo,
5. Sep 2015
Die eigentlichen Factories sind die IFillData Instanzen, denn die bauen das Dokument.
Man sollte sich allerdings auch nicht zu sehr auf die Patterns versteifen um diese auf Teufel komm raus umzusetzen. Diese Lösung mit einem DI-Container ist wesentlich flexibler und trifft eher das, was du haben möchtest (soweit ich das aus deiner Beschreibung heraus lesen kann).
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Sir Rufo,
4. Sep 2015
Schau dir mal das Projekt im Anhang an ;)
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Sir Rufo,
4. Sep 2015
Nein, das ist definitiv nicht zweckmäßiger ... dann wirst du wohl eher so etwas benötigen
IFillData = interface
end;
IFillConcreteData = interface( IFillData )
function WithThis( AData : TConcreteData ) : IFilledForm;
end;
TFillDataFactory = class
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Sir Rufo,
4. Sep 2015
Wenn es immer die gleichen Daten sind, dann benötigst du so etwas
TData = class
// alle benötigten Eigenschaften
end;
IFilledForm = interface
// was soll man mit dem ausgefüllten Formular machen können?
procedure SendAsEmail( ... );