ciò che è posto migliore per la registrazione proxy e mediatore nel quadro PureMVC flex?
-
19-09-2019 - |
Domanda
Sto usando quadro PureMVC per lo sviluppo di progetto basato flex. La mia domanda è legata a ciò che è il modo migliore per ritardato la registrazione classe proxy e la classe mediatore? Attualmente il comando di avvio sto registrando avvio mediatore.
Il mio codice è:
- ApplicationFacade.as
- StartupCommand.as
- StartupMediator.as
- LoginCommand.as
- LoginMediator.as
- LoginProxy.as
- LoginView.as
Nel ApplicationFacade.as Io mando notifica al StartupCommand . StartupCommand registri StartupMediator .
Ora la mia domanda:
- Quando e dove iscriversi LoginMediator
- Quando e dove iscriversi LoginProxy
- Quando per inviare la notifica a LoginCommand
-
Se noi registri LoginMediator e LoginProxy in LoginCommand come
public class LoginCommand extends SimpleCommand implements ICommand { override public function execute(notification:INotification):void { facade.registerProxy( new LoginProxy() ); facade.registerMediator( new LoginMediator( app ) ); } }
Ora, se io mando la notifica per LoginCommand più volte allora crea instace multiplo di LoginProxy e LoginMediator . Così come per evitarlo?
Soluzione
-
Nel mio startUpCommand posso registrare tutti i mediatori che attualmente hanno vista sul palco. Aspetto di registrare tutti gli altri punti di vista e mediatori fino a quando non sono necessari.
-
mi iscrivo quasi tutti i proxy nella mia startUpCommand in modo da poter registrare da flashVars e caricare i dati dal server. Per quanto riguarda il tuo LoginProxy mi piacerebbe creare nella tua StartUpCommand per iniziare. Una volta che l'applicazione cresce è possibile spostarlo in un comando che imposta il mediatore di accesso.
Io suggerirei di mettere il codice in un'istruzione switch per assicurare il vostro codice in esecuzione sulla notifica corretta e rimuovendo il comando.
public override function execute (notifica: INotification): void {
interruttore (notification.getName ()) {
caso AppFacade.START_UP:
// RIMUOVERE AVVIAMENTO COMANDO
facade.removeCommand (notification.getName ());
break;
}
}
È inoltre possibile utilizzare il metodo hasProxy sulla facciata per essere sicuri di non si registra due LoginProxies.
if (facade.hasProxy (LoginProxy.NAME)) {
facade.registerProxy ...
}