2012-01-08 11 views
15

Dla projektu pracowałem nad aplikacją komputerową JavaFX 2.0 (interfejs klawiatury). Sposób działania JavaFx2.0 (w moim projekcie), obsługa zdarzeń interfejsu użytkownika odbywa się w samych klasach interfejsu użytkownika JavaFX 2.0 (na przykład: zdarzenia onclicked() lub detektory zmiany właściwości).Jak zorganizować kontrolery/prezenterów w dużej aplikacji JavaFx 2.0?

W tej chwili używam klasy statycznej za pomocą metody: getController(), której wszystkie klasy UI używają do uzyskania dostępu do kontrolera aplikacji (jakoś wydawało mi się nieporządne przekazywanie kontrolera do wszystkich 50+ klas UI).

Problem polega jednak na tym, że jeden kontroler staje się bardzo duży! Ma zbyt wiele metod (wszystkie metody logiki biznesowej, które muszą być dostępne w moich klasach UI). Mimo że metody te są przekazywane tylko do mojego modelu/usługi, wciąż istnieje wiele wyjątków, które muszą zostać przechwycone na poziomie kontrolera w celu obsługi ich w interfejsie użytkownika (pokazywać komunikaty o błędach itp.).

Ktoś wie w czysty sposób, aby ten cały wzorzec MVC/MVP działał lepiej dla mojej aplikacji bez klas UI/Controller/Model bezpośrednio zależnych od siebie? Może inny kontroler dla każdego przypadku użycia? Ale jak mógłbym to zrobić, aby właściwa klasa UI uzyskała właściwego kontrolera, nie wiedząc o tym bezpośrednio? Może za pomocą interfejsu?

+0

Nie jest jasne, co robi Twój kontroler. – toto2

+0

Może podzielisz interfejs użytkownika na części, z których każda ma własny kontroler? – Tower

Odpowiedz

3

Naprawdę nie znam Java FX, więc powinieneś wziąć moją odpowiedź z przymrużeniem oka. Spojrzałem trochę na tutoriale Java FX, ale wszystkie wydają się być malutkimi przykładami bez żadnej architektury ... MVC lub innych.

Może nie powinieneś próbować zbyt mocno, aby mieć czysty wzór MVC. Wydaje mi się, że każdy element UI sam jest jednostką MVC, np. Etykieta zawiera tekst (model), jego reprezentację graficzną (widok) i obsługuje zdarzenia (kontroler).

Być może właśnie sprawiasz, że twoje życie staje się bardziej bolesne, próbując mieć osobnego kontrolera globalnego.

Można jednak zachować osobny model, który byłby konieczny, na przykład, jeśli wyświetla się zawartość bazy danych (model). Jeśli jednak robisz coś bardzo prostego, wystarczy użyć stanu interfejsu jako modelu; przechowywanie danych (modelu) osobno w programie spowodowałoby jedynie marnowanie czasu na synchronizowanie danych w interfejsie użytkownika i danych w osobnym modelu. Powielanie danych jest złe i powinno się ich unikać w jak największym stopniu.

2

proponuję Ci przetestować Framework JRebirth

ona stanowić prosty, ale mocny wzór, który pomoże Ci zorganizować swoją aplikację.

Te ramy są młode i zostaną ulepszone zgodnie z otrzymanymi informacjami zwrotnymi. Nie wahaj się wysłać trochę.

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

sprawdzić na stronie i kodu źródłowego dostarczonego aby dowiedzieć się więcej.

żywo Demo dostępne są również

+0

ten link jest zepsuty – James

+0

link przywrócony (został tymczasowo wyłączony) –

+0

Łącze zepsute ponownie. – Derek

0

Włożyłem podstawowy samouczek na my website za jakiś czas temu, w jaki sposób MVC wzór może być realizowane za pomocą Java i JavaFX 2. klasy model jest zawsze oddzielone i nie powinien nic wiedzieć o kontrolerze i przeglądarce.Jeśli jest to duży projekt, polecam używanie modułów, w których masz swój model, przeglądarkę i kontroler. Moduł może być administratorem portalu lub Google Map Viewer itp

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

+2

Link jest teraz uszkodzony – Andrew

Powiązane problemy