Design Pattern: Parsen ähnlicher, aber unterschiedlicher Schemata in Textdateien

8

Vielen Dank im Voraus für Ihre Hilfe. Ich frage mich, ob es ein (Design-) Muster gibt, das auf dieses Problem angewendet werden kann.

Ich möchte Werte aus Textdateien mit ähnlichen, aber unterschiedlichen Formaten analysieren, verarbeiten und extrahieren.

Genauer gesagt, baue ich eine Verarbeitungsmaschine, die Online-Poker-Handhistory-Dateien von einer Vielzahl verschiedener Websites akzeptiert und bestimmte Datenfelder (Hand #, DateTime, Spieler) analysiert. Ich brauche die Logik, um die Dateien für jedes Format leicht zu analysieren, aber die Verarbeitung der extrahierten Werte wird die gleiche sein.

Mein erster Gedanke wäre, nur eine Klasse zu erstellen, die ein "Schema" für jeden Dateityp akzeptiert und entsprechend analysiert / analysiert. Ich bin mir sicher, dass es eine bessere Lösung dafür gibt.

Danke!

Bonuspunkt: Irgendwelche spezifischen Implementierungshinweise in C #.

    
JWD 02.12.2008, 15:46
quelle

5 Antworten

6

Das klingt nach einem Kandidaten für das Strategie-Muster. Ein Beispiel in C # findet sich hier und ein anderes hier . Eine kurze Beschreibung finden Sie auf Wikipedia .

Weitere vollständige Beschreibungen finden Sie im Buch von Fowler und Kerievsky .

Es ist auch im GoF-Buch verfügbar.

    
Mattias Holmqvist 02.12.2008, 16:01
quelle
2

Das Muster "Provider" ist das, nach dem Sie suchen ... es ist das, was in ADO.Net verwendet wird. Jeder Datenbankanbieter verfügt über einen separaten Datenanbieter, der weiß, wie er die Daten seines spezifischen DB-Vendor-Produkts lesen kann, liefert sie jedoch in einem Standardformat (Schnittstelle) an nachgelagerte Systeme ... Sie schreiben einen kleinen "Provider" Eine Komponente (eine einzelne Klasse wird ausreichen), die das Format für jeden Ihrer verschiedenen Website-Pokerhistorie-Datenanbieter "kennt" und diese Daten auf genau die gleiche Weise dem vorgelagerten System zur Verfügung stellt, das sie liest ...

    
Charles Bretana 02.12.2008 15:56
quelle
1

Klingt so, als ob Sie das Strategie-Muster benötigen, mit dem Sie einen Algorithmus auf verschiedene Arten implementieren können:

Ссылка

    
George Jempty 02.12.2008 16:02
quelle
1

Erstelle zuerst dein "Online Poker Hand History" Modell . Dieses Modell wird die Daten darstellen und in der Lage sein, diese Daten unabhängig von der Quelle zu verarbeiten. Erstellen Sie dann providers für jedes der verschiedenen Quellformate, die in der Lage sein müssen, die Dateiinformationen in das Modell zu konvertieren.

BEARBEITEN: z.B.

%Vor%     
bruno conde 02.12.2008 15:59
quelle
1

Sie können auch das Befehlsmuster verwenden, in dem Sie eine Aktion für die Zugriffszeit des Dateityps benötigen verarbeiten. Auf diese Weise haben Sie die Flexibilität für alle Formate und halten sich an die konsistenten Parameter, die Ihr Prozess benötigt.

Ein weiterer Vorteil ist, dass Sie für jedes neue Dateiformat neue Aktionen erstellen können, ohne den Code für die anderen Formate neu zu gestalten.

    
David Robbins 04.12.2008 01:39
quelle