模型视图演示者(MVP)模型是什么?

时间:2009-12-15 13:44:31

标签: model-view-controller

我似乎无法理解MVP中的MODEL究竟是什么。

如果我有分层架构PRESENTATION / APPLICATION / DOMAIN / INFRASTRUCTURE,那究竟是什么模型?

  1. 通过访问的DOMAIN对象 下层?
  2. 中定义的单独对象 PRESENTATION图层映射到 UI并使用从a获得的数据 下层?
  3. 如果有人能够清楚我对什么是MODEL的理解,那将非常感激。

4 个答案:

答案 0 :(得分:7)

模型通常是表示应用程序在其中运行的核心域(业务或其他)的类/类型/组件的组。这些类通常以业务规则的形式执行所需的关键逻辑,并且还使用/操作数据。

在您的分层示例中,模型主要位于“域”层中,但也可以位于“应用程序”层中。

我认为你很难理解它,因为你试图结合两种不同的架构模式,或者看待应用程序的方式,即n层/ n层与MVP。

使用某种模型/视图方法同时在应用程序中应用分层是完全合理的(并且非常常见)。

也许你应该一次一个地关注它们,然后在你更熟悉它们时叠加它们。

答案 1 :(得分:4)

在任何Model-View- *体系结构中,Model都是描述应用程序中的数据的(如果它们符合需要,则传递给View进行渲染)。

如果您的应用程序已经拥有Domain对象,那么很可能您可以将它们用于您的模型。

答案 2 :(得分:3)

你所遵循的建筑指南并不重要,M总是一样的。模型是特定于您的域的部分。这是你正在尝试做的事情的真正部分。该模型应该代表您的业务领域。这适用于MVP,MVC,MVVM等。

如果您正在制作库存系统,那么库存类很可能在您的模型中,产品可能在那里,订单,您就会明白。这些是组成域逻辑的东西。

答案 3 :(得分:1)

模型是数据。这可能只是DataSets中数据库的数据,或者它可能是一个完整的域模型,其中的对象代表您的业务领域。

视图是用户界面,无论是网页还是Windows应用程序或移动设备应用程序。

演示者是两者之间的粘合剂和整个装备的大脑。视图启动的操作发生在演示者中。例如,通常在WinForms应用程序中,我的View中的Button.Click事件只调用Presenter上的一个方法,该方法然后采取任何必要的操作(并且它可能只是在视图中做了一些事情)。

演示者持有对视图的引用(通过接口)和模型。该视图引用了演示者(通常我强烈地键入它,但它也可以是一个接口)。该模型不了解演示者或视图。