Главная » iPhone, Objective-C, Программирование для iOS и MacOS » Модель-Представление-Контроллер

0

В паттерне проектирования «Модель-Представление-Контроллер», или сокращенно MVC (Model-View-Controller), каждый созданный вами класс должен относиться к одной из трех функциональных категорий: модель, представление или контроллер. Краткая сводка «разделения обязанностей» между категориями:

•  Модели отвечают за хранение данных и предоставление их другим объектам. Модели ничего не знают о пользовательском интерфейсе и не умеют отображать себя на экране; их единственное предназначение – хранение и управление данными. NSString,

NSDate и NSArray – традиционные объекты моделей. В iTahDoodle пока используется только один объект модели: экземпляр NSМutаblеАrrау, в котором хранятся задачи. Однако каждая от- дельная задача будет описываться экземпляром NSString, и он тоже будет объектом модели.

•  Представления являются визуальными элементами приложений. Они знают, как отобразить себя на экране и как реагировать на ввод данных пользователем. Представления не располагают информацией о данных, которые ими отображаются, об их структуре и способе хранения. Типичные примеры объектов представлений – UIView и его различные субклассы, включая UIWindоw. В приложении iTahDoodle

объекты представлений являются экземплярами UIТаblеViеw, UIТextView и UIВuttоn. Простое и практичное правило: если вы видите какой-то элемент приложения на экране, значит, это представление.

•  Контроллеры выполняют логику, необходимую для связывания и управления различными частями вашего  приложения. Они обрабатывают  события и координируют работу других объектов вашего приложения. Контроллеры – настоящая «рабочая сила» любого приложения. Хотя в iTahDoodle используется

только один контроллер BNRAppDelegate, в сложном приложении вполне может быть много разных контроллеров, координирующих работу объектов моделей и представлений, а также других контроллеров.

На рис.27.5 представлена схема передачи управления между объектами при поступлении пользовательского события (например, нажатия кнопки). Обратите внимание: модели и представления не взаимодействуют друг с другом напрямую; в середине любого взаимодействия находится контроллер, получающий сообщения от одних объектов и передающий инструкции другим.

Очень важно четко понимать обязанности каждого из участников паттерна MVC.

Большая часть программных интерфейсов Сосоа и Сосоа Touch ориентирована на MVC

- и ваш код тоже должен ориентироваться на этот паттерн.

А    теперь    вернемся    к    контроллеру,    который    является    экземпляром

BNRAppDelegate.

Источник: Аарон Хилегас, «Objective-C. Программирование для iOS и MacOS», 2012 г.

По теме:

  • Комментарии