PureMVС в картинках - для ленивых – Ростислав Сирык http://flash-ripper.com/

Содержание

Слайд 2

Способы разработки приложений

Хотелось бы:
«Раз!» - «работка»
Есть:
«Раз!» - «…а получилось как обычно»
Должно быть:

Способы разработки приложений Хотелось бы: «Раз!» - «работка» Есть: «Раз!» - «…а

1. Раз-Ра-Бот-Ка («по-э-тап-но»)

Слайд 3

PureMVC для ленивых

Вопрос: Зачем нужен PureMVC?
Ответ: Для экономии лени.
Лень – это друг

PureMVC для ленивых Вопрос: Зачем нужен PureMVC? Ответ: Для экономии лени. Лень
человека.
Количество лени во Вселенной ограничено и неизменно ;-(
Лень не берется из ниоткуда не исчезает в никуда.
Слишком умные отбирают лень у просто умных
PureMVC — оружие «слишком» умных.

Слайд 4

Векторная карта Москвы

- пример PureMVC-приложения -

Векторная карта Москвы - пример PureMVC-приложения -

Слайд 5

Векторная карта как дерево

На вид двумерная, но внутри четыре измерения

Векторная карта как дерево На вид двумерная, но внутри четыре измерения

Слайд 6

Общий вид карты


Общий вид карты

Слайд 7

Работа карты с браузером


Работа карты с браузером

Слайд 8

Требования к карте

Карта Москвы с точностью до метра
9 уровней масштаба
Гибкая настройка стиля

Требования к карте Карта Москвы с точностью до метра 9 уровней масштаба
и поведения
Инструменты карты
«Чтобы работала лучше Mos2.ru»
Рабочая версия http://217.10.32.73:8080/map/

Слайд 9

- рефакторинг -

Большая переделка

- рефакторинг - Большая переделка

Слайд 10

Если вы попали в серьезную переделку
Рефакторинг или Реорганизация — процесс полного или

Если вы попали в серьезную переделку Рефакторинг или Реорганизация — процесс полного
частичного преобразования внутренней структуры программы при сохранении её внешнего поведения.
http://ru.wikipedia.org/wiki/Рефакторинг

Слайд 11

Подходы к рефакторингу

Наивный (нет подхода):
как-нибудь да получится («какой-какой «рефакторинг?»)
Самоуверенный:
вера в

Подходы к рефакторингу Наивный (нет подхода): как-нибудь да получится («какой-какой «рефакторинг?») Самоуверенный:
идеальный код, не нуждающийся в переделке
Эгоистичный:
пусть рефакторит компьютер, он железный
Осознанный:
делаем с учетом будущего, придерживаемся правил
Стратегический:
применение паттернов, проектирование, фреймворки.

Слайд 12

Методы рефакторинга

Изменение сигнатуры метода
Заключается в добавлении, изменении или удалении параметра метода.
Инкапсуляция поля
Было:

Методы рефакторинга Изменение сигнатуры метода Заключается в добавлении, изменении или удалении параметра
public var x: Number;
Стало: private var _x: Number; // добавляется getter-setter
Выделение метода
Самокомментирующийся код: если фрагмент кода требует комментария, то его следует выделить в отдельный метод и назвать так, чтобы данный комментарий стал ненужным.
Перемещение метода
Перемещается метод, который чаще обращается к другому классу, чем к своему собственному.

Слайд 13

Проблемы от рефакторинга

Проблемы, связанные с базами данных
Проблемы изменения интерфейсов
Трудности при изменении дизайна

Проблемы от рефакторинга Проблемы, связанные с базами данных Проблемы изменения интерфейсов Трудности при изменении дизайна

Слайд 14

PureMVC

- и паттерны проектирования -

PureMVC - и паттерны проектирования -

Слайд 15

Что такое PureMVC

PureMVC - это классический мета-паттерн «Model-View-Controller»
Proxies = Модель
Mediator = Представление
Commands

Что такое PureMVC PureMVC - это классический мета-паттерн «Model-View-Controller» Proxies = Модель
= Контроллер
+ Notifications (Оповещения) для коммуникации.
+ Façade (Фасад) для координирования

Слайд 16

Шутка про k=3

Математик идет по улице. Видит — филармония, афиша, "Камерный оркестр Джо

Шутка про k=3 Математик идет по улице. Видит — филармония, афиша, "Камерный
Пауэлла". О, говорит, интересно, зайду. Через полчаса растроенный выходит: "Тьфу, тривиальный случай, k=3"
Математик что-то знал (Паттерны?).

Слайд 17

Схема PureMVC

Схема PureMVC

Слайд 18

Схема PureMVC (0xffffff)

Схема PureMVC (0xffffff)

Слайд 19

Что дает PureMVC

Дисциплина разработки
Общий язык для архитекторов
Более устойчивый к рефакторингу проект

Что дает PureMVC Дисциплина разработки Общий язык для архитекторов Более устойчивый к рефакторингу проект

Слайд 20

Структура PureMVC

Фасад:
Показать все, что скрыто.
Медиатор:
Скрыть все, что видно.
Посредник:
Отдать то,

Структура PureMVC Фасад: Показать все, что скрыто. Медиатор: Скрыть все, что видно.
что взято.
Команда:
Сделать, когда нужно.
Оповещение:
Сделаю все, что скажут.
Пойду туда, куда пошлют.
Принесу то, не знаю что.

Слайд 21

Популярность PureMVC

AS2
Java
AS3 Standard
AS3 MultiCore
ColdFusion

C#
Perl
PHP
Python
Ruby

Популярность PureMVC AS2 Java AS3 Standard AS3 MultiCore ColdFusion C# Perl PHP Python Ruby

Слайд 22

Мы хотим знать разницу

PureMVC or Cairngorm? >> Интересует Ваше мнение по этим библиотекам

Мы хотим знать разницу PureMVC or Cairngorm? >> Интересует Ваше мнение по
>> и вообще по паттерным решениям для Flex. Без сомнения и то и другое полезно. Но если бы еще авторы их уделяли достаточно внимания "расжевыванию" своих замыслов реализованных во фреймворке. Качественное "расжевывание" - это когда даже студенту-программисту незнакомому с паттернами  будет ясно что к чему. Потому что когда специалист не может оценить риски по миграции - это уже либо бестолковое описание, либо "особая форма маркетинга" (сокрытие информации о недостатках продукта) ИМХО. [http://groups.google.com/group/fpug/browse_thread/thread/3770e9c4a296dad9]

Слайд 23

Изучение PureMVC

http://puremvc.org
Goals & Benefits
Conceptual Diagram
Framework Overview
Best Practices

Изучение PureMVC http://puremvc.org Goals & Benefits Conceptual Diagram Framework Overview Best Practices

Слайд 24

Статьи о PureMVC на русском

10 советов по PureMVC
Что мы знаем о flash/flex

Статьи о PureMVC на русском 10 советов по PureMVC Что мы знаем
фреймуорках?
Пример Flash-галереи на PureMVC
Как создать простой FLV-плеер во Flex и Flash, используя PureMVC
Мои статьи
-= Чисто MVC =- (тут важны комменты)
Архитектура и ключевые фигуры фреймворка PureMVC
Фасад (Façade) — ядро и лицо фреймворка PureMVC
Как устроены Модель, Вид и Управление во фреймворке PureMVC
Кто использует Cairngorm?
Обновления по статьям, новые ссылки: http://flash-ripper.com/archives/002194.php

Слайд 25

Развитие PureMVC: Мультитон

Multiton вместо Singleton
http://en.wikipedia.org/wiki/Multiton_pattern
Мультитон – паттерн, подобный Синглтону, позволяющий создание более

Развитие PureMVC: Мультитон Multiton вместо Singleton http://en.wikipedia.org/wiki/Multiton_pattern Мультитон – паттерн, подобный Синглтону,
одного экземпляра класса.
Вместо Одиночки – группа Одиночек, доступных по ключам (экземпляров).
Клиенты не могут добавлять ключи.
Никогда не возвращает пустую ссылку.
Польза: упрощение работы с общими ресурсами в приложении (shared objects).
Централизованный доступ к хранилищу.

Слайд 26

Пример использования PureMVC

- в приложении карты -

Пример использования PureMVC - в приложении карты -

Слайд 27

Обновление карты-1: Вид

Класс MapView (boundary)
package view
{
public class MapView extends Sprite
{
private function

Обновление карты-1: Вид Класс MapView (boundary) package view { public class MapView
updateMap():void
{
mapMediator.onBBoxChanged(layersToLoad);
}
}
}

Слайд 28

Обновление карты-2: Медиатор

Класс MapMediator
package view
{
public class MapMediator extends Mediator
{
internal function

Обновление карты-2: Медиатор Класс MapMediator package view { public class MapMediator extends
onBBoxChanged(layersToLoad: Array): void
{
var noteBBoxUpdate: Notification = new Notification(ApplicatonFacade.NOTE_BBOX_UPDATE);
noteBBoxUpdate.setBody(layersToLoad);
facade.notifyObservers(noteBBoxUpdate);
}
}
}

Слайд 29

Обновление карты-3: Фасад

Класс ApplicationFacade
package
{
public class ApplicatonFacade extends Facade implements IFacade
{
public static

Обновление карты-3: Фасад Класс ApplicationFacade package { public class ApplicatonFacade extends Facade
const NOTE_BBOX_UPDATE: String= "noteBBoxUpdate";
// Commands registration
override protected function initializeController(): void
{
super.initializeController();
// Layer Model.updatePatchesInRectangle
registerCommand(NOTE_BBOX_UPDATE, UpdateBBoxCommand);
}
}
}

Слайд 30

Обновление карты-4: Команда

Класс UpdateBBoxCommand
package controller
{
public class UpdateBBoxCommand extends SimpleCommand
{
override public

Обновление карты-4: Команда Класс UpdateBBoxCommand package controller { public class UpdateBBoxCommand extends
function execute(note: INotification): void
{
ApplicatonFacade.msProxy.updateMap(note.getBody() as Array);
}
}
}

Слайд 31

Обновление карты-5: Прокси

Класс MapServerProxy
package model
{
public class MapServerProxy extends Proxy
{
public function updateMap

Обновление карты-5: Прокси Класс MapServerProxy package model { public class MapServerProxy extends
(layersToLoad:Array):void
{
mapModel.loadLayers(layersToLoad);
}
}
}

Слайд 32

Обновление карты-6: Модель

Класс MapModel
package model
{
internal class MapModel
{
internal function loadLayers (arrLayersToLoad:Array):void
{
// собственно

Обновление карты-6: Модель Класс MapModel package model { internal class MapModel {
загрузка данных
}
}
}

Слайд 33

PureMVC спешит на помощь

Рефакторинг 1: Смена источника данных с Geo XML на

PureMVC спешит на помощь Рефакторинг 1: Смена источника данных с Geo XML на AMF
AMF

Слайд 34

PureMVC помогает еще раз

Рефакторинг 2. Древовидный рендеринг карты.
Смена сигнатуры метода
Было: private function

PureMVC помогает еще раз Рефакторинг 2. Древовидный рендеринг карты. Смена сигнатуры метода
renderGeoEntity(data: FlashGeoEntity): void
Стало: private function renderGeoEntity(): void // после initGeoEntity
Переход от Спрайтов к Шейпам
Откат на Спрайты☻

Слайд 35

5 советов по PureMVC

Используйте Медиаторы: создавайте API для компонентов вида в Медиаторах,

5 советов по PureMVC Используйте Медиаторы: создавайте API для компонентов вида в
а не используйте их методы напрямую.
Используйте Оповещения почаще (но не напрямую от Медиатора к Прокси).
Используйте Команды и МакроКоманды.
Используйте Remote Proxy.
Используйте Value Objects (VO).

Слайд 36

Почему проект выжил

Благодаря разделению кода с самого начала
Благодаря разделению кода с самого

Почему проект выжил Благодаря разделению кода с самого начала Благодаря разделению кода
начала
Благодаря разделению кода с самого начала
Благодаря разделению кода с самого начала
Благодаря разделению кода с самого начала
Благодаря разделению кода с самого начала
Благодаря разделению кода с самого начала
Благодаря разделению кода с самого начала
Благодаря разделению кода с самого начала
Благодаря разделению кода с самого начала
Благодаря разделению кода с самого начала
Благодаря разделению кода с самого начала
Имя файла: PureMVС-в-картинках---для-ленивых-–-Ростислав-Сирык-http://flash-ripper.com/.pptx
Количество просмотров: 759
Количество скачиваний: 1