Qual é o melhor lugar para registrar proxy e mediador na estrutura Flex PureMVC?
-
19-09-2019 - |
Pergunta
Estou usando a estrutura PureMVC para desenvolver um projeto baseado em flex. Minha pergunta está relacionada ao que é a melhor maneira de atrasar a classe de proxy e a classe mediadora? Atualmente no comando de inicialização, estou registrando o mediador de inicialização.
Meu código tem:
- ApplicationFacade.as
- StartupCommand.as
- StartupMediAtor.a
- Logincommand.As
- LoginMediAtor.As
- LoginProxy.a
- LoginView.as
Dentro ApplicationFacade.as Estou enviando notificação para StartupCommand. StartupCommand registros StartupMediAtor.
Agora minha pergunta:
- Quando e onde se registrarLoginMediator ?
- Quando e onde se registrarLoginProxy ?
- Quando enviar notificação paraLogincommand ?
Se registrarmos LoginMediator eLoginProxy dentro Logincommand Curti
public class LoginCommand extends SimpleCommand implements ICommand { override public function execute(notification:INotification):void { facade.registerProxy( new LoginProxy() ); facade.registerMediator( new LoginMediator( app ) ); } }
Agora, se estou enviando notificação paraLogincommand várias vezes, então ele cria múltiplos instacos deLoginProxy e LoginMediator. Então, como evitá -lo?
Solução
No meu startupCommand, registro todos os mediadores que atualmente têm visualizações no palco. Espero registrar outras visualizações e mediadores até que sejam necessários.
Registro quase todos os proxies no meu startupCommand para que eles possam se registrar no Flashvars e carregar dados do servidor. Quanto ao seu loginProxy, eu o criaria no seu startupCommand para começar. Quando o seu aplicativo crescer, você pode movê -lo para um comando que configure seu mediador de login.
Eu sugiro colocar seu código em uma instrução Switch para garantir que seu código de execução na notificação correta e removendo o comando.
Substituir a função pública Execute (Notificação: Inotification): void {
switch (notification.getName ()) {
case appfacade.start_up:
// Remova o comando de inicialização
Facade.RemoveCommand (notification.getName ());
parar;
}
}
Você também pode usar o método Hasproxy na fachada para garantir que você não registre dois LoginProxies.
if (fachada.hasproxy (loginproxy.name)) {
Facade.RegisterProxy ...
}