Sto costruendo un'applicazione basata su Flex 4 usando il modello di progettazione del modello di presentazione. Questa applicazione avrà diversi componenti diversi come mostrato nell'immagine qui sotto.
MainVieweDashboardViewsarannosemprevisibilieciascunodiessiavràmodelliemodellidipresentazionecorrispondenti,senecessario.QuestevistesonofacilmentecreatedichiarandoilloroMXMLnellarootdell'applicazione.
<s:HGroupwidth="100%" height="100%">
<MainView width="75% height="100%"/>
<DashboardView width="25%" height="100%"/>
</s:HGroup>
Ci saranno anche molte viste WidgetViewN che possono essere aggiunte a DashboardView dall'utente in fase di runtime attraverso un semplice elenco a discesa. Questo dovrà essere realizzato tramite ActionScript.
L'elenco a discesa dovrebbe sempre mostrare quale WidgetViewN è già stato aggiunto a DashboardView. Pertanto è necessario memorizzare alcuni stati sui quali è stato creato WidgetViewN. Poiché l'elenco di WidgetViewN disponibile e quelli aggiunti a DashboardView devono essere accessibili anche da altri componenti del sistema, penso che questo debba essere archiviato in un oggetto Model.
La mia comprensione del modello di progettazione del modello di presentazione è che la vista è molto snella. Contiene la logica più vicina a zero come è pratico. La vista comunica / si collega al modello di presentazione che contiene tutta la logica di visualizzazione necessaria. Il modello di presentazione è effettivamente una rappresentazione astratta della vista che supporta l'accoppiamento basso e facilita la testabilità. Il modello di presentazione può avere uno o più modelli iniettati per visualizzare le informazioni necessarie. I modelli stessi non contengono alcuna logica di visualizzazione.
Quindi ho alcune domande su questo progetto.
- Chi dovrebbe essere responsabile per la creazione dei componenti WidgetViewN e l'aggiunta di questi a DashboardView? È questa la responsabilità di DashboardView, DashboardPresentationModel, DashboardModel o qualcos'altro interamente? Sembra che DashboardPresentationModel sia responsabile della creazione / aggiunta / rimozione di qualsiasi visualizzazione secondaria dalla sua visualizzazione, ma come si fa a farlo senza passare in DashboardView a DashboardPresentationModel?
- L'elenco dei componenti WidgetViewN visibili e visibili deve essere accessibile anche ad alcuni altri componenti. Va bene se un riferimento a un WidgetViewN è memorizzato / referenziato in un modello?
- Esistono buoni esempi del modello del modello di presentazione online in Flex che includono anche la creazione di viste secondarie in fase di runtime?