2017-01-25 3 views
0

Я смотрел несколько обучающих видеороликов Swift из Стэнфорда на youtube. Инструктор (Paul Hagerty, великий учитель!) Говорит о том, как iOS строится вокруг идеи MVC (model-view-controller). Я читал, что некоторые люди говорят о переполнении стека, что идея мертва, а другие говорят, что многие веб-разработчики используют эту терминологию сейчас.MVC, разница между контроллером и моделью?

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

Что я не понимаю, если нет базы данных в случае автономного приложения (а не в Интернете), разве мы также не создаем данные и логику того, как наша программа работает в одно и то же время? В чем разница между контроллером и моделью в этой ситуации?

ответ

1

Модель - это данные. Представьте себе контроллер табличного представления. Представление представляет собой представление таблицы. Контроллер - это UITableViewController. Модель может быть такой же простой, как массив строк.

Контроллер посредничает между моделью и видом. Он выбирает данные, которые он хочет отобразить, и устанавливает их в представлении.

Для действительно простого контроллера вида, который показывает только текст, модель может быть такой же простой, как строка. Если текст является статическим, контроллер представления может даже не иметь истинной отдельной модели. Он просто отобразит текст, запеченный в раскадровке.

+0

Итак, модель по существу является фактическим местом памяти на компьютере, где хранится что-то вроде массива (или любого объекта/данных)?Вот почему это похоже на пример базы данных, я бы предположил. Вывод и вставка того, что вы помещаете в массив, является контроллером, и представление отображает данные массива в пользовательском интерфейсе? – schulzey

+0

Вы бы типично относились к более абстрактным терминам, чем к памяти. Модель обычно является объектом; это может быть простая строка или массив, как указано здесь, или более сложный объект, который инкапсулирует базу данных и включает в себя методы работы с моделью. Например, объект модели «заказ» может иметь методы добавления/удаления позиций из заказа, а также отправки заказа, маркировки его как оплаченного и т. Д. – Paulw11

0

Рискуя быть распятым за чрезмерное упрощение: вы можете думать о MVC как о способе разделения «проблем» - на английском языке - у каждого есть своя «ответственность» (разделение проблем).

Итак, в вашем «простом примере» вы можете «разделить» концепции как клиента и сервера - рискуя еще большим позором, browser и некоторым веб-сайтом.

  1. controller: Браузер вводит данные пользователя и делает запрос;
  2. model: веб-сайт, который отвечает некоторым данным, которые могли бы быть просто HTML документ
  3. view: Браузер предоставляет эти данные пользователю

Итак:

  • Браузер Безразлично 't "знать", как данные были созданы/построены, он просто управляет запросом/ответом и отображает результат

  • Все e веб-сайт создает некоторые данные и передает их (назад) запрашивающему. Его не волнует, как он используется/отображается/отображается/фильтруется и т. Д.

  • Все представления - это данные визуализации/отображения каким-либо значимым образом для пользователя. Неважно, откуда взялись данные, и как он был построен.

Hth.

Смежные вопросы