Pracowałem jako wolny strzelec przez długi czas, a prawie 90% projektów dotyczyło Java Swing (aplikacje na komputery stacjonarne). Również wiele projektów obejmowało migrację z języków takich jak Visual Fox Pro do Java, to był ból, ponieważ trudną częścią jest nie myśleć w logice, która jest już zrobiona, najtrudniejszą częścią jest wziąć kod, który jest bałaganem i zmienić go do dobrze wyglądającego kodu zgodnego z dobrymi praktykami i wzorcami projektowymi, dlatego dobrym pomysłem jest stworzenie schematu lub mapy w swoim umyśle, w jaki sposób można oddzielić swój kod zgodnie z koncepcjami Modelu, widoku, kontrolera.
MVC, jak wspomniano, pomaga mieć atrakcyjny, łatwy w utrzymaniu i czytelny kod, a także postępować zgodnie z paradygmatami programowania i dobrymi praktykami.
Zobacz: Oczywiście, że część, która współdziała z użytkownikiem (interfejsem użytkownika), w przypadku Swing, okna, ramki, panele i cały kod, który obejmuje elementy graficzne potrzebne do aplikacji.
Kontroler: Zawiera rdzeń lub logikę biznesową, które utwierdziłeś dla swojej aplikacji, w tej "warstwie" powinieneś uwzględnić funkcjonalność i "jak moja aplikacja osiągnie cele?".
Model: Powiązane z danymi zarządzanie, na przykład, twoje jednostki i klasy, która reprezentuje dane, które chcesz zarządzać lub dać konserwacji.
Stosowanie MVC nie jest tak trudne, ale jak wspomniałem, może to być czasem problem, kiedy trzeba przenieść swój kod z nie stosującej się struktury MVC do aplikacji strukturalnej MVC. Łatwiej jest rozpocząć kodowanie za pomocą MVC.
Sposób, w jaki się do tego przyzwyczaję to użycie maven i oddzielenie mojej aplikacji w małe "moduły", oczywiście, nie potrzebujesz maven, po prostu uznałem to za przydatne w tym momencie, ale w każdym razie możesz spróbuj ćwiczyć lub przyzwyczaić się do MVC, oddzielając aplikację na małe projekty, na przykład:
Java Project 1: model danych aplikacji (zawiera cały kod związany z zarządzaniem danymi: podmioty, dtos, fasola, daos)
Java Projekt 2: application-core-kontroler (zawiera wszystkie logiki biznesowej i funkcjonalność, można użyć wzoru elewacji tutaj, jeśli chcesz, aby Twój kod bardziej „przezroczyste”, gdy odnoszą się do widoku)
Java Projekt 3: application-view-ui (zawiera wszystkie panele, ramy i elementy graficzne)
Pracując w ten sposób pomógł mi (i zmusił mnie), aby przyzwyczaić się do oddzielenia mój kod i pilnować co naprawdę ma znaczenie dla projektu, nad którym pracuję. Na przykład, jeśli jestem na modelu danych aplikacji, koncentruję się na modelu danych, nie myślę logiki biznesowej ani interfejsu graficznego.
Długie wyjaśnienie, może ktoś mógłby zrobić to lepiej, ale mam nadzieję, że mogłem ci pomóc lub przynajmniej dałem ci z tym rękę.
Pozdrawiamy.
Witamy w gnieździe szerszeni. Swing miesza paradygmat MVC, umożliwiając wirtualizację "VC" w jeden komponent. Dobro lub zło jest nieistotne, tak po prostu jest. To, co robi, to spróbować oddzielić dane od widoku. Są pewne szkoły myśli, że należy usunąć element "kontroli" z widoku do własnej klasy, osobiście uważam, że to tylko zwiększa złożoność i zachęca więcej problemów, niż to jest warte - IMHO. Ogólnie rzecz biorąc, twój widok/kontroler nigdy nie powinien być w stanie bezpośrednio zmienić danych, to jest odpowiedzialność za model - IMHO – MadProgrammer
Ah, dziękuję. To sprawiło, że sprawy stały się bardziej jasne. Ale czy zgodziłbyś się, że ma sens wprowadzenie oddzielnego kontrolera, jeśli implementacja GUI prawdopodobnie się zmieni (na przykład SWT)? Szkoda, że nie można upvote swój komentarz - nie mają jeszcze reputacji :) –
Oddzielny regulator sens tylko wtedy, gdy API/ram działa w podobny sposób, mają jakiś rodzaj interfejsów. To powiedziawszy, jeśli napiszesz swojego kontrolera używając tego samego paradygmatu, w jakim zostały napisane modele (tj. Zacznij od interfejsu, przejdź do abstrakcyjnej implementacji, a następnie pozwól na wiele implementacji konkretnych), byłoby to możliwe. Musiałby to być rozważany akt balansowania, ale postrzegany, jako że chciałbym wszystko streścić, aby implementacja nie była znana tym, którzy go używają, tak, uznałbym to za rozsądny pomysł – MadProgrammer