2010-11-20 6 views
0

Ich versuche herauszufinden, was hier zu tun ist. Ich habe Kundendaten in zwei verschiedenen 3rd-Party-Apps, die ich in einer angemessenen Datenstruktur organisieren muss, bevor ich Änderungen vornehme. Ich habe derzeit zwei Unterklassen von Kunden, einen für jede 3rd Party App.Matching zwei subclassed Objekte in vb.NET

Public MustInherit Class Customer 
    Public ID as String 
    Public Name as String 
    Public.... more shared members here 
End Class 

Public Class Application1Customer 
    Inherits Customer 

    Public Application1SpecificData.... 
End Class 

Public Class Application2Customer 
    Inherits Customer 

    Public Application2SpeceficData..... 
End Class 

Ich brauche alle Instanzen Customer1 ihren jeweiligen Customer2s abzubilden. Ich habe einen Algorithmus, der die Logik hat, um eine Instanz von Kunde1 zu geben, und eine Liste von Kunden2 findet die passende Übereinstimmung.

Hier ist, wo ich nach Design-Ideen suche ... Kunden sind nicht die einzigen Daten, die zwischen den beiden Anwendungen abgestimmt werden. Ich habe auch zwei Item-Klassen, zwei Payment-Klassen, zwei Invoice-Klassen usw. Jede dieser Klassen hat ihren eigenen Algorithmus, um Instanzen zu vergleichen ... Ich möchte die Menge an wiederverwendbarem Code maximieren.

Fragen:

  • Was ist ein gutes Design Musterabschnitt zur Anpassung?

  • In welcher Datenstruktur habe ich ein übereinstimmendes Objektpaar gespeichert?

Mein aktueller Gedanke:

  • Diese Unterklassen eine Art von Matchable Interface implementieren. Diese Schnittstelle enthält eine Methode, die wie folgt aussieht:

    Public Function matchToApp (Sammlung Matchable) Als Matchable

  • Ein neuer Objekttyp mit zwei Eigenschaften, eine für jede App kombinierbare ...

Ich bin mir sicher, dass es da draußen noch kreativere Möglichkeiten gibt. Irgendwelche Vorschläge?

Dank

Antwort

0

Sie nicht brauchen Sie benutzerdefinierte Schnittstellen für sie zu erfinden. Um 2 Instanzen zu vergleichen, können Sie System IComparable (Of T) Schnittstelle implementieren, aber ich denke in Ihrem Fall, da Sie Instanzen wahrscheinlich in HashTable oder Dictionaly-Container zuordnen müssen GetHashCode() und Equals() Methoden überschreiben. Bitte schauen Sie there