Чем MVVM в .Net отличается от MVC в какао? - PullRequest
9 голосов
/ 03 мая 2011

Я читаю о MVVM и, насколько я понимаю, не могу сказать, как «представление модели» MVVM радикально отличается от «контроллера» в MVC, как это используется в программировании Какао.

Я даже прочитал некоторые объяснения, которые якобы были «ага» для других и до сих пор не смогли уловить разницу.Я разработал ограниченное программирование графического интерфейса пользователя Cocoa, рассматривая контроллер как центральную точку для управления данными, поступающими в И из представления в модель, с использованием наблюдения значения ключа.

Во всех важных аспектахмне кажется, что 'view-mode' делает, за исключением того, что это может быть тонкое различие в реализации, относящееся к мосту WPF <-> C # в .Net.Таким образом, MVC в Какао может называться MVVM, если GUI Какао был задан на другом языке, нежели код приложения, и контроллер был закодирован на том же языке, что и GUI, а не приложение (т.е. WPF указан в XAML, а неC #).

Или, возможно, MVC в средах, не относящихся к Какао, без наблюдения всех значений ключей и т. Д., Сильно отличается от MVC, применяемого в Какао, и это привело к тому, что люди находят большие различия между MVVM и MVC.чем у меня.

Я сумасшедший?Пожалуйста, просветите меня.

1 Ответ

13 голосов
/ 21 февраля 2012

В течение многих лет я был большим поклонником 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...