В течение многих лет я был большим поклонником MVVM в WPF, а недавно приобрел MVC в Какао.Сначала они казались идентичными, потом похожими, и теперь, когда я больше работаю с Какао, ничего похожего.
Мне кажется, что различия в направлении привязки.
В MVVM,представление привязывается к свойствам объекта ViewModel (V -> VM).Измените свойства объекта ViewModel, и с небольшим количеством jiggery-pokery, используя NotifyPropertyChanged, представление волшебным образом обновляется.View пассивно считывает свойства объекта View Model, а ViewModel абсолютно ничего не знает о View - вы можете удалить View, и он все равно будет работать.Это дает вам гибкость в переписывании, изменении или объединении представлений и позволяет им «просто работать» без изменения кода модели линии обзора.
В MVC под Cocoa (iOS) контроллер представления связывается с представлением(VC -> V) через явные свойства IBAction / IBOutlet - у вас есть прямая ссылка в вашем контроллере представления на объекты представления.Вы напрямую сообщаете элементу управления об изменении в вашем контроллере представления, и ViewController обладает глубокими знаниями о внутренних элементах представления.Удалите View, и ViewController выдаст исключения во время выполнения.
Для меня это касается направления привязки.
С Какао, использующим шаблон MVC, вы напрямую «контролируете» представление черезконтроллер представления (верно), *? 1011 *
В MVVM / WPF вы сами обновляете элемент управления представлением, наблюдая за изменениями объекта ViewModel - привязка наоборот и пассивна.
WPF без MVVM похож на Cocoa MVC для iOS и немного напоминает формы ASP.NET.
Какао для OSX имеет более доступную MVVM-подобную стратегию связывания, но это не так.недоступно на iOS.