Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Model View Presenter (MVP) What is the model?

I just cannot seem to get my head around what exactly is the MODEL in MVP.

If I have a layered architecture PRESENTATION / APPLICATION / DOMAIN / INFRASTRUCTURE, what exactly is the MODEL?

  1. DOMAIN objects accessed through lower layers?
  2. A separate object defined in the PRESENTATION layer that maps to the UI and uses data obtained from a lower layer?

If someone could clear my understanding on what is the MODEL it would be greatly appreciated.

like image 856
David Avatar asked Dec 15 '09 13:12

David


People also ask

What is model in MVP?

The Model. This is basically the component of the MVP pattern where the data lies, therefore it can be referred to as the data model. It contains all the information relevant to your business logic, and gives the system access to your different databases.

What is model in MVP Android?

MVP (Model — View — Presenter) comes into the picture as an alternative to the traditional MVC (Model — View — Controller) architecture pattern. Using MVC as the software architecture, developers end up with the following difficulties: Most of the core business logic resides in Controller.

What is MVP and MVC?

MVC(Model View Controller) MVP(Model View Presenter. One of the oldest software architecture. Developed as the second iteration of software architecture which is advance from MVC. UI(View) and data-access mechanism(Model) are tightly coupled.

What is MVC MVP and MVVM pattern?

MVC (Model — View — Controller), MVP (Model — View — Presenter), and MVVM (Model — View — ViewModel) is the most popular and industry-recognized android architecture pattern among developers.


4 Answers

The Model is normally the group of classes/types/components that represent the core domain (business or otherwise) that your application operates within. These are the classes that perform the key logic required, often in the form of business rules, and also consume/manipulate data.

In your layered example, the Model would mostly be found in the Domain layer but could also be in the Application layer.

I think you're having difficulty understanding it because you are trying to combine two separate architectural patterns, or ways of looking at the application, being n-tier/n-layer versus MVP.

It's completely reasonable (and quite common) to use some sort of Model/View approach while at the same time applying layering in your application.

Maybe you should focus on them one at a time to start with and then overlay them when you are more familiar with both.

like image 142
Ash Avatar answered Oct 17 '22 23:10

Ash


In any of the Model-View-* architectures, the Model is what describes the data in your application (and, if they fit the need, are passed in to the View for rendering).

If your application already has Domain objects, it very well may be the case that you could use them for your Model.

like image 36
Justin Niessner Avatar answered Oct 17 '22 23:10

Justin Niessner


It doesn't matter what architectural guidelines you're following, M is always going to be the same thing. The Model is the piece that is specific to your domain. It's the part that really is what you're application is trying to do. The Model is supposed to represent your business domain. This goes for MVP, MVC, MVVM, etc.

If you were making a inventory system, then an Inventory class would most likely be in your Model, a Product would probably be there, an Order, you get the idea. These are the things that compose your domain logic.

like image 40
Joseph Avatar answered Oct 17 '22 22:10

Joseph


The model is the data. This might just be data out of a database in DataSets, or it might be a complete domain model with objects representing your field of business.

The view is the UI, whether web pages or a Windows application or a mobile device application.

The presenter is the glue between the two and the brains of the whole outfit. Actions initiated by the view take place in the presenter. Generally in a WinForms application, for instance, a Button.Click event in my View simply calls a method on the Presenter, which then takes whatever action is necessary (and it may just be doing something back in the View).

The presenter holds a reference to the view (through an interface), and to the model. The view has a reference to the presenter (usually I strongly-type this, but it can be an interface as well). The model doesn't know about the presenter or the view.

like image 22
Ryan Lundy Avatar answered Oct 17 '22 22:10

Ryan Lundy