我正在使用 puremvc 框架来开发基于 Flex 的项目。我的问题与延迟注册代理类和中介类的最佳方法是什么有关?目前,在启动命令中,我正在注册启动中介。

我的代码有:

  1. 应用程序外观.as
  2. 启动命令.as
  3. StartupMediator.as
  4. 登录命令.as
  5. 登录中介器.as
  6. 登录代理.as
  7. 登录视图.as

应用程序外观.as 我正在发送通知至 启动命令. 启动命令 寄存器 创业调解员.

现在我的问题是:

  1. 何时何地注册登录中介 ?
  2. 何时何地注册登录代理 ?
  3. 何时发送通知至登录命令 ?
  4. 如果我们注册 登录中介登录代理登录命令 喜欢

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

    现在,如果我发送通知登录命令 多次,它创建了多次登录代理登录中介. 。那么如何避免呢?

有帮助吗?

解决方案

  1. 在我的 startUpCommand 中,我注册了当前在舞台上具有视图的所有调解器。我会等待注册任何其他视图和调解器,直到需要它们为止。

  2. 我在 startUpCommand 中注册了几乎所有代理,以便它们可以从 flashVars 注册并从服务器加载数据。至于您的 LoginProxy,我会在您的 StartUpCommand 中创建它来帮助您开始。一旦您的应用程序增长,您可以将其移动到设置登录中介器的命令。

我建议将您的代码放在 switch 语句中,以确保您在正确的通知上执行代码并删除命令。

覆盖公共函数执行(通知:INotification):void {
开关(notification.getName()) {
案例 AppFacade.START_UP:
// 删除启动命令
Facade.removeCommand(notification.getName() );
休息;
}
}

您还可以在外观上使用 hasProxy 方法来确保您不会注册两个 LoginProxies。

if(facade.hasProxy(LoginProxy.NAME)) {
门面.registerProxy ...
}

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top