Hallo,
der Titel passt nicht unbedingt, aber ich wusste nicht, wie ich es anders in Kurzform ausdrücken sollte.
Ich habe eine Hauptklasse "TParser":
Delphi-Quellcode:
TParser = class(TPersistent)
private
fFeedItem : TFeedItem;
fFeed: TFeed;
fFeedType: TFeedType;
fXMLDoc: IXMLDocument;
procedure GetFeedType;
public
constructor Create(XMLDoc: TStream); virtual;
property FeedType: TFeedType read fFeedType write fFeedType;
end;
Das ist nur ein kleiner Teil und die Klasse ist mehr oder weniger noch ohne Funktion.
Von dieser leite ich dann ab und habe z.B. dann die Klassen TRSSParser, TAtomParser, TRDFParser, usw.
In den Unterklassen werden dann später die entsprechenden abstrakten Prozeduren überschrieben und mit Inhalt gefüllt, sodass ich die entsprechenden
XML-Dateien auslesen kann.
Nun zum eigentlichen Problem: Wenn die ganzen Klassen später fertig sind, soll es so einfach wie nur möglich sein, einen Feed zu parsen. Wenn ich das nun so alles lasse, müsste man im Hauptprogramm z.B. beim Öffnen einer
XML-Datei immer erst überprüfen, um was für einen Feed-Typ es sich handelt und demendsprechend dann TRSSParser.Create, TAtomParser.Create, etc. machen.
Am besten wäre es ja, wenn man einfach nur TIrgendwas.Create machen würde und dann die entsprechende Klasse erstellt wird.
Gibt es dafür irgendeine "coole" Lösung? Die einzige, nicht so schöne, die mir einfällt wäre eine Funktion, der ich die
XML-Datei übermittel, die dann halt überprüft, um was es sich handelt und dann die entsprechende Klasse erstellt und zurückliefert.
Gruß
Sascha