1

我正在使用被动视图模式。用户单击新帐户按钮。视图使用无参数方法调用将责任委托给演示者。

问题是有多种帐户类型,因此用户需要选择他们想要创建的帐户类型。我该如何解决这个问题?

  1. 从视图中创建一个新表单,获取所需信息并将其作为属性公开,以便演示者可以检索它。(这忽略了视图中不应包含任何逻辑的概念)
  2. 从演示者创建和使用新表单。(这将演示者直接与表单联系起来,忽略了 MVP 的全部要点)
  3. 在其他地方创建新表单并将其作为构造函数参数传递给演示者......或视图。
  4. 忘记它并为每种帐户类型添加一个新按钮。(有许多帐户类型,这会使 UI 变得混乱,但就这样吧。)
  5. 我正在以错误的方式解决这个问题,需要重新考虑我的设计。(如果是这种情况,将不胜感激朝正确方向轻推。)
4

4 回答 4

1

我可能会创建另一个演示者视图对来获取帐户类型。然后要么

  • 您的演示者直接呼叫其他演示者以显示新表单或
  • 您的演示者向其模型询问正确的帐户类型。该模型知道它应该询问其他地方并调用“帐户类型演示者”甚至“帐户类型模型”。

我想我会选择第一个选项,除非你的演示者变得笨拙。

于 2009-06-26T14:26:27.013 回答
0

我不是 MVP 专家,但我会通过使用委托从视图中获取帐户类型来处理这个问题。演示者在打开“选择帐户类型”表单并在用户选择帐户类型并关闭表单时返回所选帐户类型的视图上调用委托。

于 2009-06-26T14:15:04.167 回答
0

如果您正在谈论用于选择帐户类型的简单界面,IMO 它取决于帐户类型的数量。我只想为每个帐户添加新按钮。但是,如果您有很多帐户类型,我会有一个包含所有可能帐户列表的组合框,而第一个(用户首先看到的)是无效或未选择的类型。我还会添加一些标签,上面写着“选择要创建的帐户类型”,然后按下一个按钮,将组合框中的值发送到模型。这样,如果用户只是单击按钮而不选择帐户类型,模型将验证类型,并将问题返回给视图(视图可以突出显示框或红色文本或其他内容)。这将防止用户错过帐户类型选择。这种方法也将使单元测试更容易。

如果您谈论的是每种帐户类型都需要填写不同的信息,那么您必须为每个帐户提供不同的视图和演示者。(这将是用户选择帐户类型后您需要的)

于 2009-07-02T02:36:21.110 回答
0

我对此的解决方案与我预期的不同。我将用户单击的按钮更改为 DropDownMenuButton。然后我将帐户类型的字符串列表传递给填充下拉菜单的视图。我还为下拉菜单项单击事件创建了一个事件处理程序,它使用菜单项的名称更新公共属性,然后将其他所有内容委托给演示者。

演示者只需从公开的属性中获取菜单项名称,然后使用帐户类型名称作为键在帐户类型的私有字典中查找帐户类型。

于 2009-09-17T20:39:19.033 回答