Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Новости и события (http://www.flasher.ru/forum/forumdisplay.php?f=55)
-   -   mvcExpress (AS3 фрэймворка) презентация для FITC (http://www.flasher.ru/forum/showthread.php?t=185769)

Deril_AS3 20.10.2012 16:11

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

Спасибо за внимание!

incvizitor 22.10.2012 01:14

А в двух фразах можно объяснить, чем он лучше аналогов?

Astraport 22.10.2012 01:16

В двух словах:
Simplest
Fastest
Хотя, конечно, желательно послушать автора.

alatar 22.10.2012 03:56

Насчет первого я бы поспорил. Ничуть не проще Robotlegs. Частично по стилю похож на Robotlegs, частично на pureMVC. Команды регистрируются только по типу события, класс события никак не проверяется. Пока впечатления не однозначные.

Добавлено через 4 минуты
View нельзя ижектить в медиатор как интерфейс, только как класс.

Deril_AS3 22.10.2012 14:10

Цитата:

Сообщение от Astraport (Сообщение 1100768)
В двух словах:
Simplest
Fastest
Хотя, конечно, желательно послушать автора.

Трудно сказать лучше .. :) спасибо Astraport.

хотя... шаг за шагом я добавляю новые функции, и я думаю, скоро мне придется изменить "Simplest" в "more features".


alatar также прав. Этат фрэймворк представляет собой смесь PureMVC и RobotLegs лучших функций. Именно поэтому в презентацие я буду говорить об "эволюции", а не "революция".

трудно улучшить RobotLegs простоту. Но я думаю, что я лучше назвал объектю и функций, и интерфейс чище, больше... "explicid".

Эта тема имет субъективный характер, но простота - одна из моих основных целей.


Цитата:

Сообщение от alatar (Сообщение 1100776)
View нельзя ижектить в медиатор как интерфейс, только как класс.

Я думал над тем, но мне не удалось придумать хороший сценарий для этой функции.


можешь дать хороший пример?

alatar 22.10.2012 14:22

Цитата:

Сообщение от Deril_AS3 (Сообщение 1100816)
можеш дать хороший пример?

Набор однотипных view, например графики, с одинаковым поведением и интерфейсом. Разница только в поставляемой модели. Базовый медиатор напрашивается один, разница будет только в имени модели, что решается наследованием медиатора.

Есть у меня один проект с таким функционалом. Киллер-фичей было бы создание правила инжекта модели в медиатор в зависимости от класса view. Т.к. модели тоже имеют один интерфейс.

Добавлено через 7 минут
В MvcExpress меня также смущает, что proxy передается только как объект. Нет ленивой инициализации.

Добавлено через 10 минут
Также хотелось бы, что бы CommandMap#execute возвращал созданную команду, для простой реализации AsyncCommand и цепочек команд.

Deril_AS3 22.10.2012 15:19

Спасибо за пример! я подумаю над этом, сделаю модель.


Цитата:

Сообщение от alatar (Сообщение 1100817)
В MvcExpress меня также смущает, что proxy передается только как объект. Нет ленивой инициализации.

будет! (v1.3.0). :) https://github.com/MindScriptAct/mvc...work/issues/23


Цитата:

Сообщение от alatar (Сообщение 1100817)
... для простой реализации AsyncCommand и цепочек команд.

для async commands и цепочек у меня есть это решение:

Код AS3:

 
package com.mindScriptAct.mapEditor.controler {
...
 
public class AsyncCommand extends Command {
 
        public function execute(blank:Object):void {
                var imageLoader:Loader = new Loader();
                imageLoader.addEventListener(Event.COMPLETE, handleImmageLoad);
                imageLoader.load(new URLRequest("example.jpg"));
        }
 
        private function handleImmageLoad(event:Event):void {
                // think what to do next...
                if (...) {
                        // execute next command if needed..
                        commandMap.execute(NextCommandInChain, params);
                }
        }
 
}
}

в mvcExpress невозможно получать Cammand i Mediator объекты, никоим образом.
Я хочу, чтоб именно так осталась.

Добавлено через 4 часа 43 минуты
Цитата:

Сообщение от alatar (Сообщение 1100817)
Набор однотипных view, например графики, с одинаковым поведением и интерфейсом. Разница только в поставляемой модели. Базовый медиатор напрашивается один, разница будет только в имени модели, что решается наследованием медиатора.

Есть у меня один проект с таким функционалом. Киллер-фичей было бы создание правила инжекта модели в медиатор в зависимости от класса view. Т.к. модели тоже имеют один интерфейс.

Я понял ситуацию правильно?

http://mvcexpress.org/temp/InterfacedViewModel.jpg

alatar 22.10.2012 20:12

Картинку лучше вставить в сообщение в расширенном режиме. На данный момент я ее не вижу. :(

Добавлено через 3 минуты
Цитата:

Я понял ситуацию правильно?
Похоже.

Deril_AS3 22.10.2012 21:03

hm...

В этой конкретной ситуации, я бы делал так:



Код AS3:

package temp {
import org.mvcexpress.mvc.Mediator;
 
public class BaseMediator extends Mediator {
 
        protected var baseView:IBaseInterface;
 
        override public function onRegister():void {
                // mediate IBaseIterface specific stuff.
        }
 
}
}

Код AS3:

package temp {
import org.mvcexpress.mvc.Mediator;
 
public class A1Mediator extends BaseMediator{
 
 
        private var _view:WiewA1;
 
        [Inject]
        public var proxyX:ProxyX;
 
        [Inject]
        public function set view(value:WiewA1):void {
                baseView = value;
                _view = value;
        }
 
        override public function onRegister():void{
                super.onRegister();
                // mediate ViewA1 specific stuff.
        }
 
}
}

Элегантное решение, и все функции находятся в правильных классов.

и использовать так:

Код AS3:

                mediatorMap.map(ViewA1, A1Mediator);
                mediatorMap.map(ViewA2Sub, A2Mediator);
                mediatorMap.map(ViewBSub, BMediator);
 
                ...
 
                var testView:ViewA1 = new ViewA1();
                mediatorMap.mediate(testView);


Добавить view inject как интерфейс легко, но я не могу найти хороший практический пример где это необходимо(как функция, или просто для удобства).

Идея такова: каждый конкретный view должна иметь конкретный mediator.
Если view имеет суперклас - mediator может иметь также суперклас, если это нужно.

спасибо за комментарий!

alatar 23.10.2012 00:09

Я бы не назвал подобное решение элегантным.
Цитата:

Идея такова: каждый конкретный view должна иметь конкретный mediator.
Это не идея — это ограничение. Чем оно обосновано?


Часовой пояс GMT +4, время: 01:44.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.