Здравствуйте.
Решил попробывать написать проект и использованием MVC-модели. Если я все правильно понял, Модель - это хранилище данных, ссылки которые раздаются вьюверам.
Вьюверы в свою очередь обновляют данные когда изменились данные в модели.
Контроллер - это механизм который создает вьюверы, модели, а так же осуществляет создание связей между ними.
Знаю что глобальный класс должен передавать в главный контроллер ссылку на себя и все но у меня пока немного не так. Пока создаю модель без вьюверов, хочу пройти сначало по моделям с контроллерами.
основной класс

Код AS3:
package {
import flash.display.Sprite;
import me.inpictures.worker.Framework;
import me.inpictures.worker.Auth;
import me.inpictures.worker.amf.AMF
public class InPictures extends Sprite {
private var framework:Framework = new Framework();
public function InPictures() {
new AMF('http://dev.net/app/Amfphp/');
framework.addTask(new Auth());
framework.run();
}
}
}
framework

Код AS3:
package me.inpictures.worker {
import flash.events.Event;
public class Framework {
private var _autorun:Boolean;
private var _task:Vector.<Worker>;
public function Framework(autorun:Boolean = true) {
_autorun = autorun;
_task = new Vector.<Worker>;
}
public function addTask(worker:Worker):void {
_task.push(worker);
}
public function run():void {
if (_task.length) {
var task:Worker = _task.pop();
task.addEventListener(Event.COMPLETE, taskCompleteHandler );
task.run();
} else trace('Framework: TaskComplete');
}
private function taskCompleteHandler(event:Event):void {
event.currentTarget.removeEventListener(Event.COMPLETE, taskCompleteHandler );
if (_autorun) run();
}
}
}
Вот здесь возникает первый вопрос. При выполнении контроллера Auth у нас приходят данные от сервера, и если в данных содержится переменная "
registration" значит нужно провести регистрацию пользователя, то-есть запустить отдельный контроллер. Как это правильно реализовать? Создать модель на подобии "центральной" модели приложения, где при выполнении контроллера Auth, модель приложения изменит к примеру статус и в соответствии главный контроллер удалит / создаст нужны окна или же мы из одного контроллера вызываем сразу второй? И в любом из случаев каким образом передаем нужный нам контроллер (экземпляр / константа + if ) ?

Код AS3:
package me.inpictures.worker {
import flash.events.Event;
import me.inpictures.data.User;
import me.inpictures.worker.amf.AMF;
public class Auth extends Worker {
public function Auth() {
}
override public function run():void {
AMF.call('User/auth', authHandler, User.simple );
}
private function authHandler(data:Object):void {
if (data.registration) {
trace('registration');
}
dispatchEvent(new Event(Event.COMPLETE));
}
}
}
Добавлено через 26 минут
P.s. Силой святого компилятора призываю к обсуждению
Babylon =)