Jak poprawnie zaimplementować MVC w Javie za pomocą Swing?

Jeśli chcesz uzyskać więcej informacji, daj mi znać, lub odnieś się do ostatnich wierszy tego pytania. Czytałem już dużo i czuję, że zmieniłem coś prostego w coś skomplikowanego i wciąż utknąłem tu i tam, więc może możesz mi pomóc w tych bardzo konkretnych punktach.

Używam Netbeans IDE 7 i JDK 7, a nie frameworków. Pierwsze okno to JFrame, a wszystkie pozostałe okna to JDialogs z modal = true.

Pytania:

W jaki sposób poprawnie zaimplementować wzór MVC za pomocą huśtawki? Z pomysłów poniżej Który jest lepszy: (A) lub (B)? A może inny ... Dlaczego jest lepiej?

(A) Główne:

MyModel model
MyView view(model)

Mój widok:

MyController(this, model)

(B)
Główny:

MyModel model
MyView View
MyController controller(view, model)

gdy klikam jbutton1 w MainFrame, potrzebuję go, aby otworzyć ramkę SettingsFrame do edycji ustawień. gdzie należy utworzyć wystąpienie widoku, modelu i kontrolera ramki ustawień? W MainFrame Controller?

Jeśli chodzi o organizację i implementację MVC, w jaki sposób powinienem obsługiwać bardziej specyficzne funkcje, które (najwyraźniej) nie mają jednego lub dwóch „nóg” MVC (model lub widok lub kontroler)? Czy mam tworzyć dla nich puste klasy?

a. The implementation of a TrayIcon
b. A URL connection class (an HttpsUrlConnection which will update data in the main jframe and also upload/download files)
c. A Directory Monitor (which will update data in the main jframe and also use the urlconnection to download a file)
d. My own implementation of TableModel
e. json

Jak prawidłowo przechowywać i używać obiektu z ustawieniami w całej aplikacji? Będę potrzebował jego informacji w różnych miejscach (Widoki, Modele, Kontrolery), ale może zostać zmieniony przez użytkownika w czasie wykonywania. Czy dobrym pomysłem jest uczynienie tego modelu singletonem?

Co powinienem zrobić, gdy:

a. View needs some data from the Model? 
What I'm doing: using the reference of Model which I keep in the View
b. View needs some data from the Controller?
What I'm doing: using the reference of Controller which I keep in the View
c. Model needs some data from the Controller?
Still didn't happen but I have no idea how to do correctly
d. Model needs some data from the View?
What I'm doing: pulling all my hair from my head...
e. Controller needs some data from the View?
What I'm doing: using the reference of the View which I keep in the Controller
f. Controller needs some data from the Model?
What I'm doing: using the reference of the Model which I keep in the Controller
g. One of FooModel, FooView or FooController needs data from one of BarModel, BarView or BarController?
What I'm doing: thinking of jumping from the highest building...

Jakieś wskazówki, jak wiedzieć, czy poprawnie zaimplementowałem MVC? Czy powinienem przetwarzać ogromne dane w modelu lub kontrolerze?

Używam także DAO, co robię: mój model ma

ArrayList MyModel load ()

metoda, która tworzy instancję DAO i zwraca ArrayList modeli zwracanych przez DAO, a następnie czasami przetwarzam tę tablicę modeli w modelu i czasami pozwalam kontrolerowi ją przetworzyć. Czy to dobra praktyka, czy jest lepszy sposób? Przez proces rozumiem: iteruj przez ArrayList i uzyskaj dane z modeli.

Mam hasło PasswordCheck jDialog, aby ograniczyć dostęp do niektórych widoków. Jak mogę go ponownie wykorzystać w kontekście MVC, aby móc używać tego samego okna dialogowego PasswordCheck, aby zezwolić / ograniczyć dostęp do różnych widoków bez bałaganu w kodzie?

Jakieś inne porady, wskazówki, pomysły, sugestie?

Kontekst: Jestem zobowiązany do opracowania oprogramowania Java Swing MVC w krótkim czasie, chociaż domyślnie nie jestem programistą Java i nie używam go do implementacji wzorca MVC, szczególnie w Javie (rozumiem ten pomysł, ale czasami brakuje mi wiedzy wdrożyć relację między klasami). Aplikacje są w zasadzie monitorem dla lokalnych / internetowych plików z JTable w głównej ramce, aby pokazać te dane. Używam nowego API WatchService, aby śledzić lokalne pliki i zapisywać ich informacje w bazie danych h2 za pomocą DAO, i ładują te dane do głównej ramki jtable. Muszę także powiadomić użytkownika o nowych plikach (dla których używam TrayIcon). Do monitorowania / przesyłania / pobierania plików online używam HttpsUrlConnection i json. Może również umożliwić dostosowanie ustawień.

Z góry dziękuję za poświęcony czas i pomoc.

questionAnswers(1)

yourAnswerToTheQuestion