2012-01-08 9 views
15

Per un progetto, ho lavorato a un'applicazione desktop JavaFX 2.0 (un'interfaccia utente di keytool). Il modo in cui JavaFx2.0 funziona (comunque nel mio progetto), la gestione degli eventi dell'interfaccia utente avviene nelle stesse classi dell'interfaccia utente JavaFX 2.0 (ad esempio: eventi onclicked() o listener di modifiche delle proprietà).Come organizzare i controller/presentatori in una grande applicazione JavaFx 2.0?

In questo momento utilizzo una classe statica con un metodo: getController(), che tutte le classi UI utilizzano per accedere a un controller dell'applicazione (in qualche modo mi è sembrato disordinato passare il controller a tutte le 50+ classi dell'interfaccia utente).

Il problema è comunque che quel controller sta diventando molto grande! Ha troppi metodi (tutti i metodi di business logic a cui è necessario accedere dalle mie classi di UI). Anche se passa solo i metodi di chiamata al mio modello/servizio, ci sono ancora molte eccezioni che devono essere catturate a livello di controller per gestirle nell'interfaccia utente (mostra messaggi di errore, ecc.).

Qualcuno sa di un modo pulito per rendere questo modello MVC/MVP intero migliore per la mia applicazione senza che le classi UI/Controller/Modello siano direttamente dipendenti l'una dall'altra? Forse un controller diverso per ogni caso d'uso? Ma come farei in modo che la giusta classe UI ottenga il Controller giusto senza saperlo direttamente? Forse usando un'interfaccia?

+0

Non è chiaro che cosa il controller fa. – toto2

+0

Forse dividi la tua interfaccia utente in parti che hanno ciascuna un proprio controller? – Tower

risposta

3

In realtà non conosco Java FX, quindi dovresti prendere la mia risposta con un pizzico di sale. Ho guardato un po 'le esercitazioni di Java FX, ma sembrano tutti piccoli esempi senza architettura di alcun tipo ... MVC o altro.

Forse non dovresti provare troppo per avere un pattern MVC pulito. Mi sembra che ogni elemento dell'interfaccia utente sia esso stesso un'unità MVC, ad es. un'etichetta contiene testo (il modello), la sua rappresentazione grafica (la vista) e gestisce gli eventi (il controller).

Si potrebbe semplicemente rendere la vita più dolorosa cercando di avere un controller globale separato.

Si potrebbe tuttavia mantenere un modello separato, che sarebbe necessario ad esempio se si sta visualizzando il contenuto di un database (il modello). Tuttavia, se stai facendo qualcosa di abbastanza semplice, basta usare lo stato dell'interfaccia utente come modello sarebbe sufficiente; tenere i dati (modello) separatamente nel programma ti farebbe perdere tempo a sincronizzare i dati nell'interfaccia utente e i dati nel modello separato. La duplicazione dei dati è malvagia e dovrebbe essere evitata il più possibile.

2

propongo di testare il JRebirth quadro

Fornisce un modello semplice ma potente che vi aiuterà a strutturare la vostra applicazione.

Questo quadro è giovane e sarà migliorato in base al feedback ricevuto. Non esitate a inviarne un po '.

http://www.jrebirth.org/doc/Overview.html

controllare il codice pagina di riepilogo e la fonte a condizione di saperne di più.

Live Demo sono disponibili anche

+0

questo collegamento è rotto – James

+0

collegamento ripristinato (era temporaneamente inattivo) –

+0

Collegamento interrotto di nuovo. – Derek

0

ho messo un tutorial di base su my website per qualche tempo fa su come MVC modello può essere implementato usando Java e JavaFX 2. La classe del modello è sempre disaccoppiato e non deve sapere nulla riguardo al controller e al visualizzatore.Se si tratta di un progetto di grandi dimensioni, consiglierei l'uso di moduli in cui sono presenti il ​​modello, il visualizzatore e il controller. Un modulo potrebbe essere il portale di amministrazione o google map viewer ecc

http://www.pergande.net/blog/article/post/Javafx+2.0+MVC/id/1

+2

Il collegamento è interrotto ora – Andrew

Problemi correlati