MVC pytanie początkującego.

Odpowiedz Nowy wątek
2009-03-17 14:48
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 koleji 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 koleji 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

Pozostało 580 znaków

2009-03-20 13:29
abe
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)

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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