MVC w Javie - ActionListeners

0

Witam, Od jakiegoś czasu robię prostą aplikacje (staram się to tworzyć w oparciu o MVC), aplikacja ma za zadanie generować losowo dane modelu, wyświetlać go, obliczyć kilka rzeczy, wyświetlić wyniki ( awt, swing), być w stanie przesłać obiekt przez sieć (przy użyciu NIO i póki co tylko tylko na jednym komputerze przy pomocy komunikacji loopback), zapisać model do pliku .txt, xml oraz odczytać z tych plików. No i generalnie natrafiłem na pewien problem, jak view ma juz kilka buttonów, proste menu, prosty display i kilka innych funkcji nie bardzo wiem jak to mam podpinać Listenery do konkretnych części JFrame. Czy do każdego buttona, JMenuItem powinien być odrębny ActionListener (oddzielna klasa implementująca ten interface)? Czy po prostu view powinien mieć funkcję dla każdego elementu dodającego słuchacza i później w kontrolerze tworzyć klasy anonimowe dla każdego elementu? Nie bardzo wiem z której strony to ugryźć, czy jesteście w stanie trochę mi to rozjaśnić lub podesłać link do jakiegoś artykułu na ten temat?

1

Najjaśniejszy przykład na jaki trafiłem z MVC to:
http://www.newthinktank.com/2013/02/mvc-java-tutorial/

Wszystko to wg mnie kwestia interpretacji samego MVC, a jest ich sporo. Możesz stworzyć oddzielne listenery dla każdego JButtona, JMenuItem. Jeśli kodu jest dużo warto umieścić go w oddzielnej klasie implementującą interfejs ActionListener, jeśli nie to po prostu wystarczy prosta implementacja kodu w samym kontrolerze jako klasa anonimowa. Wszystko zależy od potrzeb i wielkości projektu. W samym widoku dla każdego elementu tworzy się wtedy metodę rejestrującą słuchacza (jeżeli listener jest wspólny to dla kilku elementów można stworzyć jedną wspólną metodę dodającą kilku słuchaczy). Ja preferuję oddzielne listenery dla każdego aktywnego elementu widoku (lub prawie każdego...), ale to też kwestia gustu. Kodu trochę więcej, ale wg mnie jest czytelniejszy.

Nie jestem ekspertem od MVC, to moja subiektywna opinia (w razie czego niech ktoś mnie poprawi :)).

0

Rzeczywiście opcji implementacji jest sporo. Mi bardziej leży MVP do desktopu. W widoku mam metody takiego typu(po drodze użyłem lambd)

new JButton().addActionListener((ActionEvent e) -> {
            //tu ewentualnie pobieram dane z gui i przekazuję do metody foo
            presenter.foo();
        });
0

A czy w przypadku Springa i wzorców projektowych tam zawartych dużo się zmieni w kodzie w porównaniu do czystej JSE?

0

Wzorce nie zależą od architektury/języka

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