У Мартина Фаулера есть страница, посвященная шаблонам проектирования пользовательского интерфейса, на которой он определяет, а затем рассказывает о MVC, MVP и других шаблонах.
http://martinfowler.com/eaaDev/uiArchs.html
A Контроллер активен в управлении пользовательским интерфейсом. Например, он будет обрабатывать любые события, инициируемые пользовательским интерфейсом, и обрабатывать их соответствующим образом.
A Presenter , с другой стороны, более пассивен и просто отображает данные через пользовательский интерфейс, который обрабатывает свои собственные события и т. Д., Или делегирует их через докладчика службе или команде.
A ViewModel - это конкретный пример Presenter, разработанный для использования с привязкой WPF / Silverlight.
A Модель представления - это модель, которая может быть представлена непосредственно представлением, поэтому, например, если ваши модели реализуют INotifyPropertyChanged для привязки данных, они будут представлять модели представления.