Ancora una volta la storia di MVVM / MVP, passando l'interfaccia di una vista al suo modello di visualizzazione, perché è cattiva?

1

Ho usato WPF per una soluzione Enterprise (centinaia di visualizzazioni pesantemente utilizzate Input e validazione dei dati) in pattern MVP (era una soluzione pulita di solito una piccola quantità di codice dietro i moduli e il codice principale era nel livello di pretension che l'abbiamo chiamato interfaccia utente processo o strato UIP)

Per i prossimi piccoli progetti ho usato WPF con MVVM. generalmente alcune idee di MVVM sono piacevoli come comandi e associazioni, in particolare il concetto di ViewModel (con una versione speciale di Model dedicata a View)

Ma non mi piaceva così tanto il concetto di Messaging e l'aggregatore di eventi di solito cerco di minimizzare l'uso di questi pattern (ad esempio, tra ViewModels uso la normale chiamata di funzione Object oriented o da View a ViewModel (ho ViewModel nel mio Visualizza così li uso per chiamare ViewModel dalla vista) ma per una chiamata da un modello di vista per visualizzarli Io uso la messaggistica, anche se a volte al posto di inviare messaggi (da ViewModel a View) invio un'interfaccia di visualizzazione al suo ViewModel e la uso interfaccia per chiamare una funzione in una vista. Qualunque organismo può dirmi che questa pratica è un modello anti e perché è male?

    
posta Mojtaba 10.04.2014 - 19:39
fonte

1 risposta

1

Mi sembra soddisfacente. ViewModel definisce un'interfaccia che richiede la vista da implementare. Ma dovresti usare questo quando non puoi usare correttamente il binding dei dati. Per esempio. vuoi vedere fare un'azione che non è legata ai dati che la vista presenta.

Perché penso che questo va bene è: il punto principale di MVVM (o MVP per quella materia) è rimuovere la dipendenza diretta tra View e ViewModel in entrambe le direzioni. In MVVM, questo è per lo più ottenuto con l'uso intensivo della riflessione nell'associazione dati. Ma a volte non è sufficiente, perché non è possibile richiamare facilmente un'azione su View da ViewModel. Per fare ciò, crei un'astrazione che rappresenti questa azione in modo che ViewModel possa chiamare questa astrazione e View realizzi questa astrazione. In questo modo, non esiste ancora alcuna dipendenza diretta tra View e ViewModel, ma puoi superare la limitazione dell'associazione dati.

    
risposta data 10.04.2014 - 19:51
fonte

Leggi altre domande sui tag