MVC pytanie początkującego.

0

Witam

Uczę się z książki o wzorach projektowych (przykłady są właśnie w Java), są to proste przykłady, typu kalkulator ale ja zastanawiam się nad jednym:

Przykładowo: Mam aplikację okienkową, mini klient bazy danych, w którym użytkownik wpisuje zapytanie sql i wynik prezentowany jest albo w kolumnie składającej się na pola textowe albo w jtable. Po stronie modelu mamy bazę danych z tabelą osoby, czyli będą tworzone obiekty klasy osoba składające się np z samych stringów.

I teraz użytkownik podaje sql i przesyła go do kontrolera (nie mam pewności gdzie sprawdzić poprawność przesyłanego zapytanie, np porównując go do jakieś maski, czy robić to już w widoku, kontrolerze czy dopiero w modelu, bo w sumie on ma odpowiadać za logikę, jak to jest?). Widok przesyła zapytanie do kontrolera a ten z kolei do modelu, który pobiera dane z bazy i tworzy z nich obiekty/obiekt klasy Osoba.

  1. Prezentacja wyniku w kolumnie pol textowych.

Czy widok ma posiadać referencję do obiektu klasy Osoba?
Czy model ma wypakować te dane do tablicy stringów i tak przesłać je do widoki, który z aktualizuje po kolei pola textowe? tylko w jaki byłby w tym przypadku sens istnienia obiektu klasy Osoba, sam już nie wiem.
Czy po prostu model przesyła obiekt klasy Osoba, a więc w modelu musi być zadeklarowana referencja do tego obiektu/grup obiektów?.

  1. Prezentacja danych w JTable.

Czy to w modelu powinno się utworzyć obiekt klasy AbstractTableModel i przesłać go do JTable w widoku, czyli np.

table.setModel(model.getTableModel())

Czy całą obsługę obiektu klasy Osoba zrobić w widoku.

To pewnie banalne kwestię ale ich wyjaśnienie potrzebne mi jest do lepszego zrozumienia tego wzorca.

Pozdrawiam

0

Według mnie można to zrobić tak:

Model:
Model to po prostu obiekt klasy Osoba.

Widok:
Okno - które chce od "tego twojego kontrolera" danych.

Kontroler:
"Ten twój kontroler" - dostaje on od Okna zapytanie (String) i zwraca tablice osób (Osoba[]).
Kontroler sprawdza czy zapytanie jest poprawne ewentualnie rzuca jakiś wyjątek.
Czyli w skrócie udostępnia metodę: public Osoba[] getOsoby(String kryterium);

View:
Okno otrzymane osoby musi teraz jakoś wyświetlić wiec:
Ad. 1)
ładuje je do pół tekstowych,
Ad. 2)
lub pakuje je do czegoś co implementuje TableModel i wrzuca do tabeli.
To pakowanie ogranicza się do użycia metody toCosTableModel.setOsoby(osoby)

1 użytkowników online, w tym zalogowanych: 0, gości: 1