gpt4 book ai didi

c# - 半复杂页面上的 MVP

转载 作者:行者123 更新时间:2023-11-30 12:54:04 24 4
gpt4 key购买 nike

我正在处理具有稍微复杂行为的 .NET 3.5 表单应用程序。它用于图书库存。为了给您一个想法,工作流程将是:

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

这是四个职责:

  • 验证 ISBN,
  • 支票簿存在,
  • 显示图书详细信息,
  • 保存新书的详细信息。

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

将其保留在一个 MVP 结构中

  • 使模型更复杂
  • 使测试设置更加复杂(每个测试都有大量设置代码来选择正确的验证器、归还书籍等,即使它们未被使用),
  • 使呈现逻辑更容易理解

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

  • 使模型更简单,
  • 为每个演示者创建更多但更简单的测试,
  • 使演示者之间的交互变得复杂(我如何向演示者发出 ISBN 有效的信号,以便显示图书详细信息?)

我正在尝试 Presenter 第一原则,所以:- 保持 View 哑(所以没有像“Presenter one validated the ISBN”这样的事件),- 保持演示者无状态,- 保持模型简单(足够)

有人知道执行此操作的最佳方法是什么吗?

最佳答案

我会选择一个 Presenter,但将 ISBN 编号的验证等委托(delegate)给服务。

演示者中的这些内容用于处理正在输入的 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 负责管理两者之间的交互。

关于c# - 半复杂页面上的 MVP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/705268/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com