我似乎无法理解MVP中的MODEL究竟是什么。
如果我有分层架构PRESENTATION / APPLICATION / DOMAIN / INFRASTRUCTURE,那究竟是什么模型?
如果有人能够清楚我对什么是MODEL的理解,那将非常感激。
答案 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上的一个方法,该方法然后采取任何必要的操作(并且它可能只是在视图中做了一些事情)。
演示者持有对视图的引用(通过接口)和模型。该视图引用了演示者(通常我强烈地键入它,但它也可以是一个接口)。该模型不了解演示者或视图。