difference between MVP MVC and MVVM

asp.net, design-patterns, silverlight, winforms, wpf

Solution

I can't give you a complete answer, however I did struggle to learn some of these patterns and might be able to give you an idea about some of the main differences.

I learned MVVM first, and then MVC. I am aware of MVP and how it works in theory, however I have never actually built an application with it.

The biggest difference between the design patterns seems to be who controls the application flow and logic.

In MVVM, your code classes (`ViewModels`) are your application, while your `Views` are just a pretty user-friendly interface that sits on top of the application code and allows users to interact with it. This means the `ViewModels` have a huge job, because they are your application, and are responsible for everything from application flow to business logic.

With MVC, your `Views` are your application, while your `Controller` handles application flow. Application logic is typically found in `ViewModels`, which are considered part of the `M` in MVC (sidenote: the `M` in MVC cannot be considered the same as the `M` in MVVM because MVC's `M` layer contains more functionality than MVVM's `M` layer). A user is given a screen (`View`), they interact with it then submit something to the `Controller`, and the `Controller` decides who does what with the data and returns a new `View` to the user.

I have not used MVP, however my understanding of it was very similar to MVC, but optimized for a desktop application instead of a client/server application. The `Views` are the actual application, while the `Presenter` handles application events and business logic.

Problem

Folks I have gone through many links/blogs. I see most of them not able to clearly communicate in layman language and as well technical difference between MVP, MVVM and MVC. I know what every character stands for and also worked on MVP. But dont really understand if someone asks me the same question. Why cant I use controller in MvP instead of Presenter ? And why View Model in MVVM instead of presenter and how does it differs ? I can in a single sentense say"MVC is optimized for ASP.NET and also has templates in VS, MVP is optimized for winforms and MVVM for SL/WPF as it supports inbuilt binding features etc". But I feel that its not what I have to understand, but in detail and deep. Could some one throw light on this with detailed explanation and usage and actual reason to choose one. Thank you all...

Original source

Related problems