gpt4 book ai didi

design-patterns - ViewModel 是否适合 Model View Presenter 模式?

转载 作者:行者123 更新时间:2023-12-02 02:32:55 26 4
gpt4 key购买 nike

在 MVC 中使用过 ViewModel,我想知道将其应用于 MVP 模式是否可行。我只有几个考虑因素,一个是 MVP 已经相当难以实现(所有额外的编码,表面上的复杂性并不多),或者 ViewModels 已经具有稍微相似的数据或实体建模方式。以 ViewModel 的形式添加另一层是多余的,还是作为实现 MVP 模式的我应该遵守的逻辑抽象?

最佳答案

ViewModels 在 MVP 中非常有用,我认为它带来的好处多于额外编码的成本。

我认为指导原则是在需要的地方使用它们,而不是简单地为它们添加更多模式或架构。

我在一个体面的面向公众的 asp.net web 应用程序上工作,但以下内容也适用于 WinForms 中的 MVP。以下是我发现在 MVP 中使用 VM 的原因。

该站点从大量 LOB 网络服务中聚合数据。这些服务由不同业务垂直领域的各种开发团队维护。返回的数据在以下方面无处不在:

  • Type Soup - 将 GUID 存储为字符串,返回 double 而不是小数,将日期作为字符串等
  • 疯狂的命名约定 - 驼峰式大小写属性、名称中的下划线、缩写困惑

但我发现使用它的最大原因是所提供的模型与 MVC 中的模型相同:模型只是不适合 View 的形状。我们正在组合模型类并添加额外的字段用于计算或聚合值等。

就我们所做的更改而言,我们必须:

  • 在 Views and Presenters (Controllers) 文件夹旁边创建一个新的 ViewModels 文件夹
  • 将模型值映射到 View 模型
  • 将 View 界面上的属性从模型类型更改为 View 模型类型
  • 根据新对象实现 View

其中唯一耗时的部分自然是模型到 View 模型的映射。在我们的例子中,我们被迫在演示者中进行大量处理以获取我们需要的数据,分配属性并不是什么大问题。对于更简单的需求,像 AutoMapper 这样的东西可以消除这种映射的痛苦。

关于design-patterns - ViewModel 是否适合 Model View Presenter 模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3051437/

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