0

我目前正在编写一个图表应用程序。我正在使用 Zedgraph 来显示 2D 图。在我的应用程序中,我需要显示大约 8 种不同类型的图表,每一种都需要提供略有不同的功能。

这里的问题是,有时我有一些大多数类将使用的“基本”功能,有时我有一些类将使用的“添加”功能,有时它是这些功能的混合体。最重要的是,图表中显示的数据再次脱节,视觉外观也脱节。

考虑以下可能适用于一个或多个图表的功能:

  • 图表自动滚动的能力(使用实时数据)
  • 图表可以在水平方向放大
  • 图表在垂直方向上放大的能力
  • 用户能够编辑图表中的点
  • 用户选择数据区域的能力
  • 用户可以更改图表的比例
  • 图表“缩放以适应”的能力
  • 拥有一个、两个、三个或四个垂直轴的能力
  • 能够显示图表叠加
  • ETC

综上所述,一些功能适用于所有图表,一些适用于图表的子集,还有一些适用于单个图表。目前我看不到要实现的功能层次结构。

我当前的实现使用一个基类(提供我可以清楚地看到的全局功能),然后我在这个基类上有两个“分支”,但我现在陷入了如何在单个类上实现不相交的功能上。我不能使用抽象类,因为有时我需要从多个类继承,但我不想提供接口,因为代码完全相同。

那么,我在这里做什么?我是否可以使用扩展方法来启用特定功能?

4

1 回答 1

1

鉴于您拥有如此多的功能方面,它们看起来相当独立(任何特定图表都可以具有任何功能子集,或接近它),并且在我看来这些是事物的类型这可能会随着应用程序的变化而变化,您可能希望花一些前期时间来概括这一点,而不是在每个图表的基础上实现它们。

我会简单地制作一个通用的“图表”用户控件并实现所有功能。然后,对于每个功能,给它一个布尔属性来启用/禁用它。(即IsHorizontalScrollable, IsVerticalScrollable, IsSelectionEnabled, ArePointsEditable)然后表单的每个实际实例只需要设置更通用表单的适当属性以及它的实际数据。

于 2012-10-31T15:37:12.973 回答