Слайд 2Cairngorm (karn gorm)
Желто-коричневая разновидность топаза,
залегающая преимущественно в Шотландии.
Произношение
![Cairngorm (karn gorm) Желто-коричневая разновидность топаза, залегающая преимущественно в Шотландии. Произношение](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388237/slide-1.jpg)
Слайд 3Что такое Cairngorm?
Набор классов и интерфейсов
Микроархитектура на базе паттернов
Проверенное решение для
![Что такое Cairngorm? Набор классов и интерфейсов Микроархитектура на базе паттернов Проверенное решение для создания Flex-приложений](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388237/slide-2.jpg)
создания
Flex-приложений
Слайд 4Зачем?
Нет необходимости изобретать велосипед
Стандартный подход
Легкий способ добавления новой функциональности
Повторное использование
![Зачем? Нет необходимости изобретать велосипед Стандартный подход Легкий способ добавления новой функциональности Повторное использование](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388237/slide-3.jpg)
Слайд 5Используемые паттерны
Singleton
Command
Delegate
ValueObject
Observer
![Используемые паттерны Singleton Command Delegate ValueObject Observer](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388237/slide-4.jpg)
Слайд 6Решаемые проблемы
Обработка действий пользователя
FrontController – перехват
Command – обработка
Service to Worker
![Решаемые проблемы Обработка действий пользователя FrontController – перехват Command – обработка Service](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388237/slide-5.jpg)
микроархитектура
Бизнес логика
BusinessDelegate – обработка бизнес логики
ServiceLocator – доступ к дата-сервисам
Клиентская объектная модель
ValueObject – модель
ModelLocator – управление состоянием и обновление представления
Слайд 7Модель
Состояние приложения
Данные с сервера или локальные данные
Реализует Cairngorm ModelLocator
Singleton для
![Модель Состояние приложения Данные с сервера или локальные данные Реализует Cairngorm ModelLocator](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388237/slide-6.jpg)
хранения клиентской модели
Слайд 8Представление
Пользовательский интерфейс (GUI)
mxml файлы и контролы
Данные доставляются в модел через
![Представление Пользовательский интерфейс (GUI) mxml файлы и контролы Данные доставляются в модел через binding](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388237/slide-7.jpg)
binding
Слайд 9Контроллер
Взаимодействие между уровнями приложения
Events
com.adobe.cairngorm.control.CairngormEvent
Commands
com.adobe.cairngorm.commands.ICommand
com.adobe.cairngorm.business.IResponder
Реализует Cairngorm ModelLocator
Singleton для хранения клиентской модели
Связка комманд
![Контроллер Взаимодействие между уровнями приложения Events com.adobe.cairngorm.control.CairngormEvent Commands com.adobe.cairngorm.commands.ICommand com.adobe.cairngorm.business.IResponder Реализует Cairngorm](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388237/slide-8.jpg)
и событий
Пользовательские события/смена модели
Слайд 10События
Парметры передаваемые между уровнями приложения
![События Парметры передаваемые между уровнями приложения](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388237/slide-9.jpg)
Слайд 11Комманда
“Service to Worker” паттерн
Реализует Cairngorm Command Interface
Responder Interface (опционально)
execute() получает событие
![Комманда “Service to Worker” паттерн Реализует Cairngorm Command Interface Responder Interface (опционально)](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388237/slide-10.jpg)
в виде аргумента
Слайд 12Сервис Локатор
Singleton паттерн
Выделяет уровень взимодействия с данными
![Сервис Локатор Singleton паттерн Выделяет уровень взимодействия с данными](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388237/slide-11.jpg)
Слайд 13Бизнес Делегат
Обращается и получает результаты от сервера
используя ServiceLocator
Позволяет комманде вызывать удаленный
![Бизнес Делегат Обращается и получает результаты от сервера используя ServiceLocator Позволяет комманде](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388237/slide-12.jpg)
сервис, обрабатывать результат или ошибку
Слайд 14Workflow
Регистрируем CairngormEvent в FrontController
Вещаем событие
FrontController – вызов execute() в нужной комманде
Command
![Workflow Регистрируем CairngormEvent в FrontController Вещаем событие FrontController – вызов execute() в](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388237/slide-13.jpg)
вызывает сервис используя BusinessDelegate
Результат обрабатывается в result() комманды
Изменение модели через ModelLocator
Изменения представления
Слайд 15ServiceLocator
ModelLocator
VO
View
User Event
Cairngorm
EventDispatcher
FrontController
Command
binding
Delegate
Диаграмма
http://www.cairngormdocs.org/tools/CairngormDiagramExplorer.html
![ServiceLocator ModelLocator VO View User Event Cairngorm EventDispatcher FrontController Command binding Delegate Диаграмма http://www.cairngormdocs.org/tools/CairngormDiagramExplorer.html](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388237/slide-14.jpg)
Слайд 16За и против
Ясный и прямолинейный подход
Легко оценивать трудозатраты
Много кода при добавлении
![За и против Ясный и прямолинейный подход Легко оценивать трудозатраты Много кода](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/388237/slide-15.jpg)
простой функциональности
Много зависимостей