首页 > 解决方案 > MVP 或 MVC 模式中的代表性数据放在哪里?

问题描述

在 MVP 和 MVC 模式中,您希望清楚地将视图与模型分开。

但是要显示图标、在发生某些事情时应该播放的动画等内容,模型需要告诉视图它想要如何表示。例如,选择元素的按钮上的图标。

因此,我认为图像、动画帧数据等内容应该是模型的一部分,因为模型的元素需要定义它。但我也觉得不应该这样。因此,我唯一能想象的就是在某处存储一个巨大的映射,将模型的类型映射到代表性数据。这对我来说似乎是一个巨大的反模式。

您将如何在项目中构建这些东西?“应该怎么看”的数据存储在哪里?在 Model 内部、Presenter 内部(映射)或 View 内部(映射)。也许我在这里遗漏了一些重要的东西。

为了澄清这是从哪里来的:

考虑您有由列表中的图标表示的对象。这些对象都有一个共同的超类型,但每个都在细节上不同,因此应该用不同的图标表示。此外,也许您将所有内容都实现为通用类型并仅在构建期间定义它的整个行为或在运行时设置内容,因此您甚至无法区分图标以通过类型显示。因此,我认为这些对象需要像“getImage”这样的访问器来获取它们希望在 GUI 中具有的表示。但是让图像成为模型的一部分似乎是错误的。

为了提供形成答案的常用方法,可以在以下目录中构建虚构项目:

src/model/
src/view/
src/presenter/

每个类型/类和哪些方法会位于哪里?

标签: oopmodel-view-controllermvp

解决方案


您将如何在项目中构建这些东西?“应该怎么看”的数据存储在哪里?

这是我使用ViewModel. 您将您的映射ModelViewModel并使用ViewModel来表示要显示的属性。您可以定制ViewModel

  • 样式/css 属性,
  • 结合属性,
  • 验证逻辑,
  • 更改属性的显示方式等等。

每个类型/类和哪些方法会位于哪里?

源/视图模型


推荐阅读