В MVP представление рисует данные от ведущего, который рисует и подготавливает / нормализует данные от модели, а в MVC контроллер рисует данные из модели и задает путем нажатия на представление.
В MVP вы можете иметь один просмотр, работающий с несколькими типами презентаторов, и один ведущий, работающий с разными множественными представлениями.
MVP обычно использует какую-то структуру привязки, такую как инфраструктура привязки Microsoft WPF или различные рамки привязки для HTML5 и Java.
В этих рамках пользовательский интерфейс / HTML5 / XAML знает, какое свойство презентатора отображает каждый элемент пользовательского интерфейса, поэтому, когда вы привязываете представление к ведущему, представление ищет свойства и знает, как извлекать данные из них и как их устанавливать, когда пользовательское значение изменяется в пользовательском интерфейсе.
Итак, если, например, модель представляет собой автомобиль, то ведущий - это своего рода автомобиль ведущий, раскрывает свойства автомобиля (год, производитель, места и т. д.). Представление знает, что текстовое поле, называемое «автопроизводителем», должно отображать свойство создателя презентатора.
Затем вы можете привязать к представлению много разных типов презентаторов, все должны иметь свойство Maker - это может быть самолет, поезд или что-то еще, представление не заботится. В представлении представлены данные от ведущего - независимо от того, что - пока он реализует согласованный интерфейс.
Эта привязка, если вы ее разделите, это на самом деле контроллер :-)
Итак, вы можете посмотреть MVP как эволюцию MVC.
MVC замечательный, но проблема в том, что обычно его контроллер на просмотр. Контроллер A знает, как установить поля View A. Если теперь вы хотите, чтобы View A отображал данные модели B, вам нужен контроллер A, чтобы знать модель B, или вам нужен контроллер A для получения объекта с интерфейсом - это похоже на MVP только без привязок, или вам нужно переписать набор UI-кода в контроллере B.
Заключение. MVP и MVC являются как развязкой шаблонов пользовательского интерфейса, но MVP обычно использует фреймворк привязок, который является MVC снизу. THUS MVP находится на более высоком архитектурном уровне, чем MVC, и шаблон оболочки выше MVC.
Мы только что закончили серию испытаний на CMS и G1, используя сопоставимую эргономику. Это зависит от продукта и очень субъективно, И мы используем Java 6 (поэтому G1 находится в сборке «предварительного просмотра»), но ...
Система, использующая CMS, работает на 20% быстрее, чем G1. Это было протестировано с кучей пространства 8 ГБ и 12 ГБ, с молодой и 1,5 ГБ памяти (соответственно).
Опять же - субъективная, единая система, специфическая нагрузка - но это наш опыт.
В этой статье Taranfx (2009-08-29) сравнивается производительность Java 5, 6 и 7 на 4 простых тестах.
Исходная научная статья ( «Первая сборка мусора» Детлефсом, Флудом, Хеллером и Принтезисом) содержит некоторые подробности о реальных мерах (в разделе 4).