как лучше всего зарегистрировать прокси и посредника в flex puremvc framework?
-
19-09-2019 - |
Вопрос
Я использую фреймворк puremvc для разработки проекта на основе flex.Мой вопрос связан с тем, какой наилучший способ отложить регистрацию прокси-класса и класса-посредника?В настоящее время при запуске команды я регистрирую startup mediator.
Мой код имеет :
- ApplicationFacade.as
- StartupCommand.as
- StartupMediator.as
- LoginCommand.as
- LoginMediator.as
- LoginProxy.as
- LoginView.as
В ApplicationFacade.as Я отправляю уведомление на Команда стартапа. Команда стартапа регистры Посредник стартапа.
Теперь мой вопрос:
- Когда и где регистрироваться Посредник для входа в систему ?
- Когда и где регистрироваться LoginProxy Логинпрокси ?
- Когда отправлять уведомление на Команда входа в систему ?
Если мы зарегистрируемся Посредник для входа в систему и LoginProxy Логинпрокси в Команда входа в систему Нравится
public class LoginCommand extends SimpleCommand implements ICommand { override public function execute(notification:INotification):void { facade.registerProxy( new LoginProxy() ); facade.registerMediator( new LoginMediator( app ) ); } }
Теперь, если я отправляю уведомление для Команда входа в систему несколько раз, то это создает несколько instace из LoginProxy Логинпрокси и Посредник для входа в систему.Итак, как избежать этого?
Решение
В моей startUpCommand я регистрирую всех посредников, у которых в данный момент есть мнения на сцене.Я жду, чтобы зарегистрировать любые другие мнения и посредников, пока они не понадобятся.
Я регистрирую почти все прокси в моей startUpCommand, чтобы они могли регистрироваться из flashVars и загружать данные с сервера.Что касается вашего LoginProxy, я бы создал его в вашей StartUpCommand, чтобы вы могли начать.Как только ваше приложение вырастет, вы можете переместить его в команду, которая настраивает ваш посредник для входа в систему.
Я бы предложил поместить ваш код в инструкцию switch, чтобы убедиться, что ваш исполняемый код получает правильное уведомление, и удалить команду.
переопределение выполнения публичной функции (уведомление: инициализация): недействительно {
переключатель (notification.getName()) {
дело AppFacade.ЗАПУСК_UP:
// УДАЛИТЬ КОМАНДУ ЗАПУСКА
фасад.RemoveCommand(уведомление.getName() );
перерыв;
}
}
Вы также можете использовать метод hasProxy на фасаде, чтобы гарантировать, что вы не зарегистрируете два LoginProxies.
если(фасад.hasProxy(LoginProxy.NAME )) {
фасад.Зарегистрироватьproxy ...
}