Какао MVC: где должна быть размещена логика работы приложения? - PullRequest
1 голос
/ 05 декабря 2011

Вся документация по Какао MVC, которую я вижу на сайте Apple Dev, работает с такими объектами, как «данные»: модель содержит «данные», контроллер отображает «данные», представление гарантирует, что данные передаются и обратно.Но такой подход хорош, только если вы создаете приложение для доступа к базе данных, такое как «календарь» или «контакты»: (.

Но где другие типы приложений? Например, давайте возьмем приложение ping с графическим интерфейсом, котороесоздает отдельный поток, пингует удаленный компьютер и рисует хороший график времени отклика пинга. Где фактический код пинга идет в Какао MVC? Это внутри модели, контроллера или вне MVC?

Следующий пример - «экран блокировки»Утилита, которая отображает графический интерфейс пользователя для настройки ярлыка, который блокирует экран OSX и будет обрабатывать этот ярлык. Фактическая логика приложения - это код дескриптора ярлыка и код, который будет проверять, что ярлык еще не используется. Является ли он в модели, в контроллере или вне MVC?

Части приложения, такие как "проверить новую версию при запуске" - это внутри модели, контроллера или вне MVC?

Мне интересно, есть ли официальная информация / руководства от Apple, которыевыделите упомянутые вопросы? Или для Apple все приложения являются внешними базами данных?: (

1 Ответ

2 голосов
/ 05 декабря 2011

Архитектура MVC работает для самых разных типов приложений, а не только для приложений, ориентированных на данные. Например:

  • Приложение для проверки связи с графическим интерфейсом должно иметь модель, которая отслеживает список хостов, их текущий статус и время отклика. Сам процесс «пингования» обычно называется функцией контроллера. Я бы, вероятно, создал бы PingManager объект, который централизовал бы это. Кроме того, у вас могут быть отдельные HostController объекты, которые управляли эхо-запросом на сервере и обновляли Host объект модели. Это не следует путать с HostViewController. Контроллеры могут координировать объекты модели без необходимости просмотра объектов.

  • Управление взаимодействием между программой и системой ярлыков будет функцией контроллера.

  • Проверка запуска версии обычно представляет собой функцию контроллера приложения, хотя это может быть его собственный объект контроллера (например, UpdateManager).

Вообще говоря, то, что вы бы назвали "логикой приложения", относится к контроллерам.

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