Sto cercando di creare un'applicazione di disegno semplice con il pattern MVP. Consideriamo che voglio essere in grado di disegnare un cerchio e trascinare (spostare) il cerchio su uno JPanel. Dopo il trascinamento, il modello dovrebbe essere aggiornato. Inoltre, in un secondo pannello dovrebbe essere aggiornata anche la posizione centrale (x, y) del cerchio. Anche se sembra essere eccessivo, mi piacerebbe implementare il secondo pannello anche come MVP.
Attività da eseguire:
- Trascina un cerchio con il mouse
- La posizione del cerchio deve essere memorizzata nel modello
- La vista dovrebbe solo disegnare, cosa c'è nel modello (un cerchio in una posizione specifica)
- La seconda vista MPV dovrebbe mostrare il valore della posizione xey del cerchio in forma di testo.
- A un certo punto l'utente può fare clic su un pulsante di salvataggio, che acquisirà i dati dei modelli e li archivierà in un file di testo. All'avvio la posizione dal file di testo verrà scritta sul modello e la vista aggiornata.
Ora ecco le mie domande:
- Ho letto molte soluzioni diverse su come implementare il pattern MVP in generale e specifiche con jgoodie. jgoodies sembra essere perfetto per componenti standard di GUI come campi di testo. Per quanto ho capito, lo spettatore dovrebbe essere solo passivo. In questo modo lo spettatore visualizza i valori trattenuti nel modello. Ora, il visualizzatore dovrebbe chiamare il presentatore in un metodo onDrag () o il peresenter dovrebbe chiamare un metodo viewer.getDragPane (). AddListener ()?
-
Presumo in entrambe le implementazioni, il valore nel modello verrà impostato. Chi sta dicendo alla vista di aggiornare, in base ai nuovi valori nel modello? Con jgoodies la vista viene aggiornata automaticamente, ma come si fa senza jgoodie? Dovrei avere un metodo nella classe di visualizzazione come, viewer.setData (modello). Sto chiedendo perché ho letto, che la vista non dovrebbe sapere nulla del modello.
-
Ora il secondo MVP (tabella con centroX, centroY come etichetta) deve essere avvisato da qualcuno. Chi dovrebbe essere? Ho letto che i messaggi di messaggistica sono comunemente usati, ma dalla mia esperienza personale è un po '"non cool" per il debug di messaggi di messaggistica. Esiste una best practice?