MVP模式中的“视图”是什么?

时间:2012-01-26 09:20:21

标签: design-patterns mvp

从一些教程中我无法理解“视图”是什么意思。更准确 - 我无法理解可以同时显示多少视图?在我阅读的教程中,只有1个视图同时显示,并且它总是占据全屏。例如,如果我需要show popup面板,通常是为这个弹出面板创建新视图?或者更好地将此弹出式面板包含在另一个视图中?

4 个答案:

答案 0 :(得分:1)

这完全取决于您使用的实现。

例如,ASP.NET MVC实现可能包含同时显示的多个部分视图(尽管只有一个主视图,即页面),而桌面应用程序可能管理多个打开的窗口,每个窗口都有自己的拥有专属的视图。然后智能手机应用程序可能只有一个活动视图随时打开...

答案 1 :(得分:1)

您可以根据需要显示尽可能多的视图,而不是MVP模式。从View透视图中,MVP描述了Model-View-Presenter之间的关系,但任何View都可以拥有具有自己的演示者和绑定模型的子视图。

如此常见的情况 - 主视图在子视图集之间划分自己的空间/布局,每个子视图都有自己的Presenter并使用自己/共享模型(取决于应用程序细节和设计)。

答案 2 :(得分:1)

理论上,我认为View是模型的表示。您可以从模型中进行一些数据转换和计算,从中提取数据并在视图中以漂亮的格式进行。

在实践中,View是用户看到的所有内容。 JFrame(Java),Activity(Android),Windows Forms是视图的示例。

答案 3 :(得分:1)

  

例如,如果我需要show popup面板,通常会创建新的   查看此弹出式面板?或者更好地将此弹出式面板包含在内   另一种观点?

如果将弹出窗口视为调用视图的一部分,那么我建议您在弹出窗口的情况下保留视图。

P.S。 从概念上讲,您可以将视图视为UI组件树。 例如,在您的情况下,树可能包含两个UI组件。 让我们先调用一个ApplicationWindow,然后调用第二个(在弹出窗口中显示)PatientEditor。 PatientEditor是ApplicationWindow的子项,因此可以在同一视图(UI组件树)中显示它。