Separazione della logica e dell'interfaccia utente - L'orchestrazione appartiene al modello?

0

Ho scritto un'app con il pattern MVP Passive View.

La mia soluzione ha quattro diversi progetti. Un MyApp.Core contenente tutti i tipi di logica aziendale, un MyApp.Forms contenente materiale correlato a WinForms (UI), un MyApp.Tests contiene tutti i test di unità e integrazione e un MyA0p.Xamarin contenente materiale correlato a XamarinForms (UI).

Ovviamente la mia idea era di rendere il più possibile riutilizzabile del codice. Dal momento che utilizzo il modello passivo di MVP, sono riuscito a farlo abbastanza bene. Tutto il mio App.Core deve essere costruito sono alcune implementazioni delle interfacce di visualizzazione (e alcune altre cose che non sono importanti qui). Quindi il mio Costruttore è simile a Core.MyApp (vista IFirstView, IOtherView altro, ...). Pensavo che questo approccio fosse fantastico. In teoria, la mia app non ha bisogno di sapere se si tratta di un'applicazione Xamarin, Console o WinForms, tutto ciò di cui ha bisogno sono le implementazioni di alcune interfacce di visualizzazione. In questo modo sono stato persino in grado di testare una navigazione di implementazione all'interno del mio progetto principale, vale a dire quale interfaccia di visualizzazione è mostrata e un primo comportamento di stack di visualizzazione per primo. Quindi la mia applicazione WinForms è davvero stupida. Ha solo un modulo radice e due controlli utente che implementano IFirstView e IOtherView e il gioco è fatto. Cool.

Ora ho iniziato a usare Xamarin. L'inizio è stato simile. Ho impostato tutta la vista abbastanza velocemente e sta funzionando al volo. Ma ora ci sono così tante piccole cose dell'interfaccia utente che non sembrano così grandi e devono essere toccate. Tutte queste cose sono legate a Xamarin e talvolta è difficile risolverlo in Core o addirittura risolverlo in Xamarin.Forms da quando Xamarin funzionalmente è stato spostato in Core.

Quindi ora mi chiedo se il mio approccio fosse corretto? Ho inserito troppo nel mio progetto Core? È meglio collocare l'orchestrazione dell'interfaccia utente nei progetti dell'interfaccia utente?

Grazie in anticipo per eventuali suggerimenti!

    
posta selmaohneh 13.10.2018 - 07:11
fonte

1 risposta

1

Nella descrizione del progetto, si menziona l'utilizzo del pattern MVP e si parla di MyApp.Core e di vari componenti View. Quello che mi manca è la parte Presenter del pattern MVP.

Questo è anche il punto in cui hai preso una svolta sbagliata: sembra che le parti Presenter e Model siano state unite in un unico componente: MyApp.Core.

Nel pattern MVP, la parte Model dovrebbe essere completamente ignara dell'esistenza di una parte View. Hai ben disaccoppiato l'implementazione della vista, ma il modello non dovrebbe nemmeno sapere quali informazioni vengono mostrate in quale vista.
È compito della parte Presenter organizzare la connessione tra il modello e la vista. E così facendo, il Presentatore può conoscere la tecnologia utilizzata per implementare la Vista, mentre il Modello non dovrebbe avere quella conoscenza.

    
risposta data 13.10.2018 - 10:37
fonte