Na forum 4programmers.net korzystamy z plików cookies. Część z nich jest niezbędna do funkcjonowania
naszego forum, natomiast wykorzystanie pozostałych zależy od Twojej dobrowolnej zgody, którą możesz
wyrazić poniżej. Klikając „Zaakceptuj Wszystkie” zgadzasz się na wykorzystywanie przez nas plików cookies
analitycznych oraz reklamowych, jeżeli nie chcesz udzielić nam swojej zgody kliknij „Tylko niezbędne”.
Możesz także wyrazić swoją zgodę odrębnie dla plików cookies analitycznych lub reklamowych. W tym celu
ustaw odpowiednio pola wyboru i kliknij „Zaakceptuj Zaznaczone”. Więcej informacji o technologii cookie
znajduje się w naszej polityce prywatności.
wraz z @Burdzi0 zastanawiamy się jak powinien wyglądać podział klas w grze Sudoku z wykorzystaniem wzorca MVC. Mianowicie nasze "doświadczenia" (o ile można tak w ogóle powiedzieć) rozumieją ten wzorzec inaczej.
Czy controller powinien zawierać główny widok okna?
Czy view to np. pojedynczy Label wyświetlający czas rozwiązywania sudoku
Czy view to np. tablica Button, które odpowiada za widok planszy
Czy Model to np. cała logika np. algorytm sprawdzający rozwiązanie Sudoku, który jest podpięty pod odpowiedniego Button jako akcja?
Czy to jest aplikacja desktopowa? W przypadku desktopa spotkałem się z inną nazwą wzorca (też logika jest oddzielona od layoutu / wizualnej strony, ale jednak jakoś to się inaczej nazywało, nie pamiętam)...
Dołączam do tego pytania, bo też mnie to interesuje!.
Jeśli chodzi o oddzielenie logiki od widoku to nie ma tutaj zbytniej różnicy od Javy webowej. Możesz sobie zrobić nawet standardowo:
model, serwisy, konwertery i walidatory i wystawić jakieś x serwisów dla widoku w JavaFX. Do poziomu serwisów może to wyglądać niemal identycznie jak w standardowej javie webowo springowo hibernateowo webowej.
Czy view to np. pojedynczy Label wyświetlający czas rozwiązywania sudoku
Z większymi komercyjnymi aplikacjami w JavaFX nie miałam styczności, ale kiedyś robiłam to sobie tak, że kontroler właśnie trzymał sobie elementy widoku typu
TextField, Label itd... i zarządzał swoim oknem oraz trzymał też referencję do serwisów z których korzystał. Miał też metody podpięte pod dane przyciski i akcje i np. gdy użytkownik coś klikał wywołuje się metoda w kontrolerze, który zmienia na widoku co ma zmienić i/lub wywołuje też akcje na serwisie. Jako ciekawostka to z adnotacją @FXML te podpięte metody mogą być nawet prywatne. Używałam JavaFX w połączeniu z Springiem i miałam tam fabrykę tych kontrolerów, które miały scope prototype i implementowały interfejs z metodą ala setDialog(FXDialog dialog). FXDialog jako zwykła klasa helper, która dziedziczy po Stage i używa FXMLLoader żeby załadować tego JavaFX XMLa, tworzy Scene i wywołuje controller.setDialog(this);. Była też fabryka tych FXDialogów coś na zasadzie:
Czy view to np. tablica Button, które odpowiada za widok planszy
Jeju wy teraz kłócicie się zero jedynkowo co uznać za słówko view. Życie nie jest takie zero jedynkowe. View to znaczy widok.
TextInput, Button albo Label to może być część widoku albo mogą czasem stanowić widok sam w sobie. Mapę tych buttonów możesz
sobie oczywiście opakować dodatkową klasą pt PlanszaSudoku i wystawić metody dla kontrolera ułatwiające czyszczenie planszy czy coś tam - możesz też nie opakowywać i w kontrolerze trzymać np. 20pól buttonów. Mniejsza o słówko view, liczy się koncepcja.
Pozdrawiam
Usunąć wpis?
Tej operacji nie będzie można cofnąć.
Krzywy Krawiec
Krzywy Krawiec
0
tak deskoptowa otagowałem to jako JavaFX - rafal20-1988 2016-12-21 20:10
Generalnie JavaFX to desktop, ale były jakieś pomysły, próby żeby też nadawała się dla web i mobile. Przykład: http://www.jpro.io/?page=demos
@karolinaa: tu nie chodzi o to że się niby kłócimy czy też nie:) chcemy coś "napisać" nabierając dobrych nawyków:) ja do tej pory tak jak Ty po nie kąt pisałaś cały czas w kontrolerze pisałem całe GUI a same metody do obsługi pisałem w zależności od tego jak aplikacja była rozbudowana albo w klasach prywatnych albo w metodach prywatnych.
Zawsze to robiłem w sposób taki w taki później potrafiłem to ze sobą połączyć:)
Ja zazwyczaj robiłem takie 'niby' MVC. Tj. W widoku trzymałem przyciski itd, ale już akcje trzymałem w całkowicie osobnych klasach. Zazwyczaj nazywałem je w stylu FrameListener (jeśli Frame było tylko jedno). Ale już w obu miejscach (widok i listenery) odwoływałem się do modeli, jeśli było konieczne. Ale z chęcią posłucham jakiegoś lepszego rozwiązania. :)
edytowany 1x, ostatnio: teez
Usunąć wpis?
Tej operacji nie będzie można cofnąć.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.