Lets assume I have a button in View A which should trigger functionality of View B.
Secondo il Pattern MV (V) C non ci dovrebbe essere alcuna "funzionalità" in nessuna vista.
La funzionalità dovrebbe essere nel livello controller che gestisce lo stato delle applicazioni modificando il modello secondo necessità.
Ora puoi avere tanti livelli di vista (in parallelo o in sequenza) per visualizzare i dati del modello e manipolarli tramite il controller.
Poiché il modello fornisce l'infrastruttura per propagare le modifiche, la Vista B può registrarsi per determinate Proprietà per ottenere le informazioni sulle modifiche in modo che possa aggiornarsi quando Visualizza A ha cambiato la proprietà.
So for functionality I have extra classes called (some prefix)ViewController? Do we also have controller for viewmodels? (ViewModelController) – Asperger
Non mettere la tua attenzione su quei nomi.
Dopo tutti i nomi sono solo polvere nel vento.
Il punto è che devi affrontare questo modello , controller a 3 livelli e visualizza . I diversi nomi (MVC, MVVC, MCP) sono solo variazioni e non significano molto per me.
Inoltre, non li si inserisce necessariamente in progetti, pacchetti o classi separati. Lo schema riguarda fondamentalmente la direzione della comunicazione :
- il modello non parla mai con nient'altro direttamente, solo tramite le interfacce che fornisce (principalmente metodi getter / setter e
*Listener
interfacce).
- il controller parla solo con il modello tramite le interfacce models .
- la vista ottiene i dati (e cambia le informazioni) per la visualizzazione dal modello e traduce l'input dell'utente alle chiamate nel livello controller . Non aggiorna mai il modello stesso.