【问题标题】:MVC additional model relationsMVC 附加模型关系
【发布时间】:2013-12-05 13:14:42
【问题描述】:

我正在尝试学习 MVC 的本机,为此我正在创建一个使用这种模式的应用程序!

现在据我了解,M(模型)被认为是数据库链接。此链接与数据库中的 ONE 表相关。例如,数据库中的 User 表是代码中的 User 模型。这意味着与User table 相关的任何事情都是通过User Model 完成的。

现在在许多应用程序中,需要以 V (View) 形式显示来自不同数据库表的数据。

我的问题是。

如果需要显示的数据彼此之间没有关系(例如usersproducts),“双重model 数据收集g”应该在哪里发生?据我所知,Controllers 应该尽可能的纤细。但它们也应该作为具有模型和视图的绑定组件。

如果view 需要来自多个model 的数据,应该controller 完成工作还是应该由model 完成工作?

完整描述我的意思有点棘手,但我希望你能明白。

另外,如果上述任何陈述不正确,请纠正我。

【问题讨论】:

  • 看,重点是你的第一个假设不太准确。模型类和数据库表之间没有强制关系(一对一或任何其他关系)。模型的类应该是对您的业务有意义的“单元”(或“事物”),而不是表格(参见Anemic Domain Model)。因此,如果您在 usersproducts 之间存在对您的业务有意义的关系,那么即使没有具有该名称的表,模型/域中也应该有一个机制(可能是一个类)来处理它。

标签: design-patterns model-view-controller


【解决方案1】:

一般来说,controller 负责将数据收集到view,考虑创建一个ViewModel 的机会,该ViewModel 收集要显示的不同数据并由controller 填充。

当您必须以复杂的方式显示给定模型或者您有聚合数据或主详细信息视图时,就会出现这种情况。

但是,如果您的需求来自从您正在开发的应用程序的角度对给定模型的不同看法,请考虑有机会将该模型映射到更好地反映 application domainapplication data model

在这种情况下,您添加一个层来创建一个更好地反映应用程序观点的model,然后controller 执行在其上执行的操作。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2014-12-15
  • 1970-01-01
  • 2017-06-28
  • 2019-11-23
  • 1970-01-01
  • 2014-12-01
  • 1970-01-01
  • 2017-07-08
相关资源
最近更新 更多