在vb.NET中匹配两个子类对象

时间:2010-11-20 01:41:03

标签: vb.net design-patterns

我正在试图弄清楚这里要做什么。我在两个不同的第三方应用程序中拥有客户数据,我需要在进行更改之前将其组织成一些合理的数据结构。我目前有两个客户子类,每个第三方应用程序一个。

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

我需要将Customer1的所有实例映射到各自的Customer2。我有一个算法,它具有给定Customer1实例的逻辑,并且Customer2s列表找到适当的匹配。

这里是我寻找设计理念的地方......客户并不是两个应用程序之间唯一匹配的数据。我还有两个Item类,两个Payment类,两个Invoice类等。每个类都有自己的算法来匹配实例......我想最大化可重用代码的数量。

问题:

  • 匹配部分的优秀设计模式是什么?

  • 我将匹配的对象对存储在哪个数据结构中?

我目前的想法:

  • 这些子类实现了某种Matchable Interface。此接口包含一个类似于以下的方法:

    Public Function matchToApp(Collection Matchable)As Matchable

  • 一个具有两个属性的新对象类型,每个应用程序可匹配一个......

我确信在那里有更多创造性的方法可以做到这一点。有什么建议吗?

由于

1 个答案:

答案 0 :(得分:0)

您不需要为它创建自定义接口。要比较2个实例,你可以实现系统IComparable(Of T)接口,但我认为在你的情况下,你可能需要覆盖可能在HashTable或Dictionaly容器中的实例,你需要重写GetHashCode()和Equals()方法。请查看there