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