Подтвердить что ты не робот

Model View Controller: отображает ли контроллер или модель данные с сервера?

Например: скажем, я хватаю список имен и сохраняю их в NSMutableArray. Я реализую метод фактического вызова сервера для извлечения данных в контроллере (UIViewController) или модели (объект Friends)?

4b9b3361

Ответ 1

Это дизайнерское решение, которое зависит от того, что вы пытаетесь выполнить. Если ваша модель имеет смысл только в контексте одной службы или если вы хотите, чтобы ваша модель предоставляла доступ ко всем данным на сервере, то создайте соединение с сервером в своей модели данных. Это может иметь смысл, если вы, например, создаете клиента для службы, такой как Twitter или Flickr.

С другой стороны, если вы просто хватаете файл с сервера и что его конец, имеет смысл сделать сообщение в контроллере. Контроллеры имеют тенденцию быть менее многоразовыми и более индивидуальными для конкретного поведения приложения. Сохранение специфики того, где данные поступают из модели, делает модель более многоразовой. Это также позволяет легко протестировать - вы можете написать тестовый код, который просто считывает локальный файл и сохраняет данные в модели.

Ответ 2

Это хороший вопрос. Я думаю, что лучший способ - через контроллер, потому что он отделяет вашу модель от необходимости использовать другую модель для правильной работы. Хотя я не думаю, что вы нарушаете "правильный mvc", делая это в модели.

Ответ 3

Я думаю, вы хотите поместить его в модель. То, что вы сделаете, это опросить модель данных, а затем модель будет обрабатывать, как заполнять себя, будь то из внутреннего хранилища данных или внешнего (например, сервера).

Ответ 4

Один подход заключается в использовании шаблона репозитория. Для этого вы создаете объекты репозитория в папке "Модель" и размещаете в них все связанные с ним методы, связанные с базой данных. Контроллеры вызывают классы репозитория для получения данных. Это позволяет отделить объекты реальной модели от методов доступа к базе данных.

Ответ 5

Я использую шаблон MVCS (Model-View-Controller-Store), который я обнаружил в книге Аарона Хиллегасса "Программирование IOS: Руководство по раннему ранчо Nerd" (http://www.bignerdranch.com/book/ios_programming_the_big_nerd_ranch_guide_rd_edition_)

Магазин специально разработан для сбора данных, независимо от того, поступает он от сервера, локального файла, сохраненной коллекции, базы данных и т.д.

Это позволяет создавать очень разнообразные приложения. Например, вы можете создать свое приложение на основе веб-службы и в тот день, когда вы хотите сохранить данные, вам просто нужно изменить хранилище, не изменяя одну строку кода в вашем контроллере.

Это очень похоже на шаблон хранилища (http://msdn.microsoft.com/en-us/library/ff649690.aspx) (cf ответ BobTurbo)

Ответ 6

Я лично сделал бы DAO или класс помощника данных. Очень сложно следить за строгим MVC в объективе C, когда ситуация усложняется. Однако включение его в модель или VC также не так.