适用于返回类似数据的多个对象的设计

时间:2014-02-28 16:09:22

标签: c#

我正在研究以下情况:

  • View有几个标签。每个选项卡由单独的类表示 并包含数据网格。

  • 每个选项卡都可以返回用户选择的项目集。 这些项目非常相似,但每个项目都有一两个 特定于它的属性。

  • View Presenter有一个名为SendItems的方法,它应该得到 当前活动选项卡中的项目并调用相应的后端 服务方法(每个不同项目集合的一种方法)。

这里的设计是什么?到目前为止,我已经想到了两种方法:

  • 由于项目非常相似,我理论上可以将所有项目分组 将属性转换为1 Item类然后我可以抽象整个事物 通过一个名为GetItems()的方法来返回 采集。然后,我可以在选项卡类型上使用委托字典 称之为正确的后端方法。

  • 我可以从基本选项卡派生所有选项卡,存储列表 Presenter中的选项卡并按住“当前”选项卡。在SendItems上,make 几个条件(每种类型一个(如果CurrentTab is TabA => MethodA(), 等。))然后向下转发以检索正确的数据。最后,打电话 适当的后端方法。

我没有找到任何解决方案吸引人(将单独的属性分组到一个类/向下转换)并且希望有一种解决此类问题的标准方法。

1 个答案:

答案 0 :(得分:0)

我相信你的情况,我会主要选择2。

  1. 创建父标签类,并使其他标签从中派生。
  2. 为您的所有项目创建一个父类,其中包含所有共享属性。每个选项卡的特定项类型可以从父类派生,以定义其额外属性
  3. 在父标签中,保留所选项目的列表。该列表应为List。子类可以获取此集合中的项目,并依赖于运行时转换来获取更具体的类型。在你的情况下,演员表基本上是一个noop(取决于你怎么做)所以那里没有任何性能问题。
  4. 在父选项卡上,将SendItems方法设为抽象,以便每个子选项卡都必须自己实现
  5. 这接近你上面的第二个选项,除了利用更多的多态性魔法并避免你在SendItems中的条件 - 如果你有这样的条件,只需将逻辑卸载到子类。