2010-05-07 5 views
1

Я работаю над какао-приложением для синхронизации данных между двумя папками.Немного помогите с MVC

  • Он имеет профили (так что вы можете иметь несколько установок)
  • Можно анализировать данные
  • Можно синхронизировать данные

Im немного запутался. Прежде всего, я не могу понять, где взять модель? И сколько контроллеров вы бы предложили? 1 WindowController или AnalyzeController, SyncController и т. Д.

Его довольно долгое время, так как я работал с MVC. Я прочитал некоторые статьи, но мне не хватает конкретных примеров того, как их разделить.

С уважением.

ответ

1

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

Ключевым делением является то, что модель данных не знает, откуда поступают данные, и это не волнует. Например, он может моделировать папку и ее содержимое, но фактическая информация в модели может исходить из реальной папки на диске или может быть получена из полностью заполненного файла plist или может быть получена из имитируемого пользовательского интерфейса папки. Модель данных не волнует, поскольку она не имеет прямой связи с конкретной реальностью. Он просто содержит абстрактное описание данных.

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

Задача диспетчеров - перевести от конкретной реальности к абстрактной модели. В этом случае контроллер будет обрабатывать соединение с удаленным сервером, сканировать папку и затем преобразовывать эту информацию в абстрактную форму, которую он передал бы модели данных. Однако контроллер не сохраняет данные и не понимает, как фрагменты данных относятся друг к другу.

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

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

+0

Я бы сделал это по-другому: имеет абстрактный класс Папка, но также имеет конкретные классы, которые где-то обрабатывают особенности доступа к (реальной или притворяющейся) папке. Мой AnalysisController и SyncController (я не знаю, из вопроса, сделаю ли я их одним и тем же объектом или нет) будут видеть и взаимодействовать с объектами только как абстрактные папки. У меня не было бы отдельного контроллера для каждой папки. –

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