Почему Apple говорит, что приложения для iPhone используют MVC? - PullRequest
4 голосов
/ 27 июня 2009

Apple описывает архитектурный шаблон, используемый приложениями iPhone, как MVC. Однако практически ни одно современное приложение не использует MVC (как описано Trygve Reenskaug). Современные операционные системы, в том числе iPhone OS, по своей природе выполняют обязанности контроллера. То, что по ошибке и обычно называют MVC, на самом деле является MVP.

Почему Apple говорит MVC, а не MVP?

Ответы [ 3 ]

18 голосов
/ 27 июня 2009

Это, конечно, хороший вопрос, и я не уверен, что знаю ответ на него. Я думаю, что Apple использует термин MVC почти повсеместно, потому что многие представления в Cocoa / AppKit используют привязки данных для рисования данных непосредственно из модели, что противоречит шаблону MVP. На диаграмме ниже (из Эта статья ) модель MVP показывает все данные, проходящие через презентатор - и это обычно не относится к хорошо построенным приложениям Cocoa.

В большинстве приложений Какао привязки данных и наблюдение значения ключа используются для связывания вида и модели без необходимости взаимодействия контроллера для их обновления. Кроме того, в приложениях Какао есть основной контроллер, который определяет, когда и где загружаются представления. Чтобы позаимствовать ответ glenn_block на этот вопрос :

В MVC контроллер ответственность за определение того, какой вид отображается в ответ на любое действие в том числе, когда приложение загружается. Это отличается от MVP, где действия маршрут через вид на Presenter.

alt text
(источник: vuscode.com )

Надеюсь, это поможет! Это может быть совершенно случайное решение со стороны Apple, но я думаю, что их выбор является разумным.

8 голосов
/ 14 ноября 2013

В большинстве приложений Какао привязки данных и наблюдение значения ключа используются для связывания вида и модели без необходимости взаимодействия контроллера для их обновления. Blockquote

Я не согласен.

По словам Пола Хегарти, профессора Стэнфордского университета CS193P (Программирование на iOS7), модель в Какао никогда не общается с View. Я просмотрел все курсы (2011, 2012, 2013, все они свободно доступны на iTunesU), и каждый раз повторял это. В ходе курса осенью 2013 года он приводит пример списка песен (вашей модели), который вы, возможно, захотите отобразить на своем iPhone (как представление): представление запрашивает у диспетчера кучу песен, и это является обязанностью Контроллер, чтобы поговорить с моделью, взять несколько песен и подтолкнуть их к просмотру. Представление будет отображать только песни. Представление никогда содержит данные модели.

Он говорит, что KVO (наблюдение значения ключа) является паттерном для связи между моделью и контроллером. Там нет привязки.

Я думаю "Apple MVC" == "Microsoft MVP".

«Microsoft MVC» предназначен только для Интернета и называется «ASP.NET MVC 4». В Интернете контроллер - это «точка входа пользователя», а на рабочем столе / сенсорный экран - представление

.
0 голосов
/ 16 апреля 2019

Начиная с этого момента, когда вы заходите на веб-страницу Apple Model-View-Controller, вам будет предложено указать «Документ в отставке. Этот документ может не соответствовать передовым методам текущей разработки».

Я полагаю, что это демонстрирует, что Apple признает, что MVC больше не является наиболее подходящей архитектурой, которая является «основой хорошего дизайна для приложения Какао». Поэтому, чтобы ответить на ваш вопрос, с 2019 года Apple больше не говорит, что приложения iPhone должны использовать MVC.

Вы можете проверить это здесь: https://developer.apple.com/library/archive/documentation/General/Conceptual/DevPedia-CocoaCore/MVC.html

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