【发布时间】:2015-03-13 01:20:07
【问题描述】:
视图是否应该知道模型:
或不:
?
【问题讨论】:
视图是否应该知道模型:
或不:
?
【问题讨论】:
不,模型和视图通过控制器进行通信。
我的意思是,您可以让它们彼此认识,但这会导致紧密耦合并且难以扩展应用程序的功能。
【讨论】:
程序员通常会简化此操作并使视图特定于模型。例如,如果您在 CRM 应用程序中,模型可能有一个 firstName 字段;然后视图假定它给出的模型对象有一个 firstName 字段,并在适当的位置显示它。
这当然是不可重复使用的。如果您正在制作一个视图来显示数据表,那么它不应该关心哪个模型字段显示在哪个列中。它应该只以通用方式处理显示和格式化表格数据。但是,如果您的视图是针对其显示的特定数据定制的网页,那就没问题了。
因此,您必须根据具体情况决定是希望视图了解其显示的特定数据,还是希望它成为可重用组件。
无论哪种方式,对模型数据的任何更改都应始终通过控制器进行。控制器负责执行您的业务逻辑,而当有其他东西绕过它时,这是不可能的。
【讨论】:
根据权利,Model,底层业务实体,不应该直接暴露给 View。我们通常使用 ViewModel,一种特定于演示的模型,它派生自一个或多个模型。
【讨论】: