Как лучше всего зарегистрировать прокси и посредник в фреймворке flex puremvc? - PullRequest
1 голос
/ 10 ноября 2009

Я использую puremvc framework для разработки проекта на основе flex. Мой вопрос связан с тем, каков наилучший способ отсроченной регистрации прокси-класса и класса-посредника? В настоящее время при запуске команды я регистрирую посредник запуска.

Мой код имеет:

  1. ApplicationFacade.as
  2. StartupCommand.as
  3. StartupMediator.as
  4. LoginCommand.as
  5. 1014 * LoginMediator.as *
  6. LoginProxy.as
  7. 1018 * LoginView.as *

В ApplicationFacade.as Я отправляю уведомление StartupCommand . StartupCommand регистры StartupMediator .

Теперь мой вопрос:

  1. Когда и где зарегистрироваться LoginMediator ?
  2. Когда и где зарегистрироваться LoginProxy ?
  3. Когда отправлять уведомления LoginCommand ?
  4. Если мы зарегистрируем LoginMediator и LoginProxy в LoginCommand нравится

         public class LoginCommand extends SimpleCommand
    implements ICommand {
        override public function execute(notification:INotification):void
        {
            facade.registerProxy( new LoginProxy() );
         facade.registerMediator( new LoginMediator( app ) );
        } } 

    Теперь, если я отправляю уведомление для LoginCommand несколько раз создает несколько инстаграм LoginProxy и LoginMediator . Так как чтобы избежать этого?

1 Ответ

1 голос
/ 10 ноября 2009
  1. В моем startUpCommand я регистрирую всех посредников, которые в данный момент имеют представления на сцене. Я жду регистрации любых других мнений и посредников, пока они не понадобятся.

  2. Я регистрирую почти все прокси в моем startUpCommand, чтобы они могли регистрироваться из flashVars и загружать данные с сервера. Что касается вашего LoginProxy, я бы создал его в вашем StartUpCommand, чтобы вы начали. По мере роста вашего приложения вы можете переместить его в команду, которая устанавливает ваш посредник для входа в систему.

Я бы посоветовал поместить ваш код в оператор switch, чтобы обеспечить выполнение кода на правильном уведомлении и удаление команды.

переопределить выполнение публичной функции (уведомление: INotification): void {
switch (tification.getName ()) {
case AppFacade.START_UP:
// УДАЛИТЬ ЗАПУСК КОМАНДУ
фасад.removeCommand (tification.getName ());
перерыв;
}
} * * Тысяча двадцать-один

Вы также можете использовать метод hasProxy на фасаде, чтобы убедиться, что вы не зарегистрировали два LoginProxies.

if (фасад.hasProxy (LoginProxy.NAME)) {
фасад.регистрПрокси ...
}

...