![]() |
mvcExpress (AS3 фрэймворка) презентация для FITC
Здравствуйте.
предлагаю вашему вниманию мой фреймворк "MvcExpress": http://mvcexpress.org/. MvcExpress облегчает программирование и работает быстрее чем PureMVC и RobotLegs, бесплатен(open source). Презентация фреймворка состоится на FITC в Амстердаме 18-19 февраля 2013 года. Охотно отвечу на все вопросы, как онлайн, и если кто приедет в Амстердаме, на FITC. Проголосовать за презентацию можно здесь: http://submit.fitc.ca/forums/139893-...work-evolution Спасибо за внимание! |
А в двух фразах можно объяснить, чем он лучше аналогов?
|
|
Насчет первого я бы поспорил. Ничуть не проще Robotlegs. Частично по стилю похож на Robotlegs, частично на pureMVC. Команды регистрируются только по типу события, класс события никак не проверяется. Пока впечатления не однозначные.
Добавлено через 4 минуты View нельзя ижектить в медиатор как интерфейс, только как класс. |
Цитата:
хотя... шаг за шагом я добавляю новые функции, и я думаю, скоро мне придется изменить "Simplest" в "more features". alatar также прав. Этат фрэймворк представляет собой смесь PureMVC и RobotLegs лучших функций. Именно поэтому в презентацие я буду говорить об "эволюции", а не "революция". трудно улучшить RobotLegs простоту. Но я думаю, что я лучше назвал объектю и функций, и интерфейс чище, больше... "explicid". Эта тема имет субъективный характер, но простота - одна из моих основных целей. Цитата:
можешь дать хороший пример? |
Цитата:
Есть у меня один проект с таким функционалом. Киллер-фичей было бы создание правила инжекта модели в медиатор в зависимости от класса view. Т.к. модели тоже имеют один интерфейс. Добавлено через 7 минут В MvcExpress меня также смущает, что proxy передается только как объект. Нет ленивой инициализации. Добавлено через 10 минут Также хотелось бы, что бы CommandMap#execute возвращал созданную команду, для простой реализации AsyncCommand и цепочек команд. |
Спасибо за пример! я подумаю над этом, сделаю модель.
Цитата:
Цитата:
Код AS3:
Я хочу, чтоб именно так осталась. Добавлено через 4 часа 43 минуты Цитата:
http://mvcexpress.org/temp/InterfacedViewModel.jpg |
Картинку лучше вставить в сообщение в расширенном режиме. На данный момент я ее не вижу. :(
Добавлено через 3 минуты Цитата:
|
hm...
В этой конкретной ситуации, я бы делал так: Код AS3:
Код AS3:
и использовать так: Код AS3:
Добавить view inject как интерфейс легко, но я не могу найти хороший практический пример где это необходимо(как функция, или просто для удобства). Идея такова: каждый конкретный view должна иметь конкретный mediator. Если view имеет суперклас - mediator может иметь также суперклас, если это нужно. спасибо за комментарий! |
Я бы не назвал подобное решение элегантным.
Цитата:
|
Цитата:
Цитата:
|
Цитата:
class ViewA implements IView class ViewB implements IView ... Код AS3:
Код AS3:
Код AS3:
Добавлено через 1 минуту Цитата:
|
понял.
Спасибо за комментарий. |
Я буду делать презентацию в Амстердаме : http://www.fitc.ca/events/speakers/s...eaker_id=13540
Спасибо за голосование! Вы все еще можете купить Super Early Bird билеты http://www.fitc.ca/events/tickets/?event=139 |
Посмотрел примеры, которые были. Искал ответ на вопрос о том, как именно выполняется инъекция зависимостей в случае, если нужно несколько однотипных данных иметь. Так и не нашел.
Хотелось бы на примере следующий сценарий. Есть много-много однотипных объектов. Допустим, мы делаем редактор предметов для игры. Там в одном из окон выведен список предметов. С каждым предметом можно выполнить какие-то действия. Пусть это будет редактирование названия/характеристик inplace и удаление предмета. Вопросы: 1. Как и кем создаются view и медиаторы для каждого из этих самых объектов? 2. Как производится инъекция нужного объекта в его view и mediator? Повторю, объектов с одним типом много. TicTacToe мог бы быть подобным примером, если бы для каждой клетки был свой view. Требование "много однотипных view" - важное. Нужно уметь создавать view с использованием других view. Если ваш фреймворк этого не поддерживает, он не нужен. В этом случае проще взять ту библиотеку, с помощью которой делается такая композиция view. В общем, какой-то минимальный пример кода хотелось бы. Не обязательно даже "много" действий. Пусть там будет список объектов. У объекта будет выводиться название и кнопка "удалить". Соответственно, "удалить" просто удаляет объект из списка. Основное требование - отображение одного объекта (название + кнопка удаления) выполнено в ввиде отдельного view и список объектов собирается с использованием этих view. |
Всегда удивляют категоричные решения типа "не нужно". Вам лично существование этого фреймворка мешает? :)
Я вот, например, не вижу смысла в создании кучи медиаторов для мелких однотипных объектов. Описанная вами ситуация укладывается в концепцию компонента List. Там и куча однотипных view (item renderer) и редактирование (item editor). |
Это можно сделать так:
В Command или ModuleCore классе: Код AS3:
Код AS3:
но, как сказал alatar - это не практично. лучше делать все это в SmallItemContainerMediator. Поместите объекты по идентификатору id в Vector или Dictionary, и работать с ними в SmallItemContainerMediator. Извините что нет хорошей информации об этом на сайте, будет в будущем. Я планирую видео курс обучения - но это большая работа. |
Я думал, что там будет что-то идеологически чистое, вроде отдельного модуля на дочерний view. А так - да, совсем непрактично.
1. В вашем решении в UI появилась совершенно ненужный там id. Ну не нужен он самому UI, а нужен только для связывания с медиатором. Причем в данном случае в UI он точно не нужен, вся логика, связанная с ID, прекрасно заканчивается на уровне медиатора и модели. 2. SmallItemMediator вынужден откуда-то получать айтем, с которым он работает. Видимо, из map'а/vector/dictionary на основе ID. Только вот не факт, что везде, где есть те объекты, есть нужный map. Да и не факт, что список объектов не будет локальным для какого-то медиатора и т.п. Вы же заставляете делать глобальное состояние. Это снижает возможность повторного использования. 3. Все делать в SmallItemContainerMediator непрактично. В SmallItemContainer может быть достаточно объемная логика по обработке той маленькой части. Поэтому уже исходя из этого нужна декомпозиция на отдельные панельки. Кроме того, отдельные панельки могут использоваться где-то еще. Все это приводит к проблемам уже при небольших модификациях исходной задачи. Сначала мы редактировали предметы. Теперь мы будем делать еще и редактор магазина. Товары в магазине - это предметы (из редактора предметов) + цена + количество. Возможность редактировать не только товар, но и свойства предмета сразу из магазина - очень удобная. Почему бы здесь тоже не использовать тот же компонент отображения предмета, что и в исходном случае? Будет компонент отображения товара, внутри которого - компонент отображения предмета. Привязки к модели делаются нормально (модель предмета - часть модели товара). Вот можно ли использовать SmallItemMediator (и SmallItemView) и в первом случае (редактор предмета) и во втором (редактор предмета внутри редактора товара)? А мы потом еще где-нибудь сделаем панельку, где только какой-то один предмет выводится (чтобы не было списка объектов)... Так что явные прямые биндинги медиаторов к данным (или возможность идентифицировать данные и привязать медиатор к каким-то данным по ID) нужна. Вообще, биндинг только по типам - не очень хорошая идея. Она накладывает массу ограничений на варианты использования. Посмотрите готовые dependency injection frameworks, там, скорее всего, практически везде есть возможность биндинга по имени. Это все потому, что может быть много объектов с одним типом, но различной "семантикой". Причем у меня, например, это достаточно типичная ситуация. Может быть несколько различных кэшей с одной и той же реализацией (но разными хранимыми объектами). Заводить несколько лишних классов только для того, чтобы обойти ограничения контейнера - перебор. Цитата:
Цитата:
Есть и вторая, чуть менее практичная причина. А вдруг автор фреймворка задумается над описываемыми мною проблемами и общей идеей фреймворка. Потом проработает много-много возникающих из этих общих проблем вопросов. И затем создаст одну или несколько библиотек, прекрасно решающих некоторые задачи (без существенных ограничений, как в случае фреймворка). Может быть, я потом смогу где-то использовать эти библиотеки :) |
Цитата:
|
Цитата:
Цитата:
Цитата:
Код AS3:
Спасибо за ваши комментарии. интересно узнать различные точки зрения. |
| Часовой пояс GMT +4, время: 21:36. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.