如何设计这个类层次结构?

时间:2010-04-01 21:22:47

标签: c# design-patterns inheritance

我定义了一个Event类:

Event

并且所有以下类都继承自Event:

AEvent BEvent CEvent DEvent

现在,通过我从所有这些活动类中收集的信息,我将制作一个图表。使用AEvent和BEvent,我将为该图表生成点,而使用CEvent和DEvent,我将绘制图表的某些区域。

现在,我应该如何在班级层次结构中发出信号?

  1. 我是否应该从PointEvent继承AEvent和BEvent,而CEvent和DEvent继承自RegionEvent,因为RegionEvent和PointEvent都是从Event继承的?
  2. 我是否应该在Enum to Event中添加一个带有2个值的点,Point和Region,并为每个子类设置它们的值?
  3. 我应该在这里使用某种模式吗?哪一个?
  4. 感谢。

3 个答案:

答案 0 :(得分:2)

我不认为一个事件与绘图有任何关系。所以我倾向于使用子类PointEventPainter和RegionEventPainter创建类似EventPainter的东西。其他实体将负责为给定事件获取适当的EventPainter。

答案 1 :(得分:1)

没有足够的信息可以确定,但听起来你的第一个选择是最好的。

由于AEvent和BEvent在本质上都是PointEvent子类,因此有一个PointEvent类是有意义的。 RegionEvent也是如此。

这将有助于您整合共享代码,并避免不必要地重复代码。

答案 2 :(得分:1)

这实际上取决于您的具体情况。 AEvent,BEvent,RegionEvent,PointEvent有点模糊。 ; - )

在大多数情况下,选项1似乎没问题。然而,它听起来有点像接口IDrawsRegionIDrawsPoint在这里会很好。另外我觉得这里有一些策略模式,你可能想看一下。