4

我正在开发行为稍微复杂的 .NET 3.5 表单应用程序。是用来存书的。为了给您一个想法,工作流程将是:

  • 用户输入 ISBN 代码
  • 如果ISBN有效,检查是否存在,
  • 如果有效且存在,则显示图书详细信息并启用保存按钮,如果不是,则显示“添加图书”按钮,
  • 如果它无效,则显示错误,
  • 最终,用户将单击“保存”,因此必须保存条目。

这是四个责任:

  • 验证 ISBN,
  • 检查书的存在,
  • 显示图书详情,
  • 保存新书详细信息。

我的问题是:我应该将应用程序逻辑保留在一个 MVP 结构中,还是应该将其拆分为四个 MVP 结构,每个职责一个?

将其保持在一个 MVP 结构中

  • 使模型更复杂
  • 使测试设置更加复杂(每个测试都有很多设置代码来选择正确的验证器、退回的书等,即使它们没有被使用),
  • 使表示逻辑更容易遵循

将其保存在单独的 MVP 结构中将

  • 使模型更简单,
  • 为每个演示者创建更多但更简单的测试,
  • 在演示者之间的交互中增加复杂性(我如何向演示者表明 ISBN 有效,以便显示图书详细信息?)

我正在尝试演示者第一原则,所以: - 保持视图不变(所以没有像“演示者验证 ISBN”这样的事件), - 保持演示者无状态, - 保持模型简单(足够)

任何人都知道最好的方法是什么?

4

1 回答 1

1

我会选择一位演示者,但将 ISBN 号码的验证等委托给服务。

在演示者中处理输入的 ISBN 的内容如下:

public void IsbnEntered()
{
    var isbn = view.Isbn;

    if (isbnService.NumberIsValid(isbn))
    {
        var details = isbnService.RetrieveDetailsForIsbn(isbn);

        if (details != null)
        {
            view.Display(details);
            view.EnableSaveButton();
        }
        else
        {
            view.DisplayError("ISBN could not be found");
        }
    }
    else
    {
        view.DisplayError("Invalid ISBN");
    }
}

这里的职责是明确的。IsbnService 负责 ISBN 处理,View 用于显示和输入检索,Presenter 管理两者之间的交互。

于 2009-04-01T12:43:50.653 回答