Mam zaimplementowane GUI za pomocą Swinga i zawsze starałem się podążać za wzorcem MVC tak bardzo, jak tylko mogłem.
Zastanawiam się jednak, czy MVC nie jest jedyną częścią układanki.
Czy FSM są również używane w projektowaniu GUI?
Nigdy nie używałem FSM w GUI i moje podejście było: w akcji, odpowiednia metoda kontrolera została wywołana, aby zakończyć aktualizację modelu, kończąc aktualizację widoku.
Zwykle na żądanie wywołane działaniem użytkownika użyłem prostych sprawdzeń, aby upewnić się, że użytkownik powinien móc wykonać działanie tego rodzaju: czy określony komponent jest włączony? lub czy etykieta jest tego rodzaju widoczna? itp.
Wydaje się, że to zadziałało, ale muszę przyznać, że miałem "szczęście" i nie musiałem tworzyć zbyt skomplikowanych, wyrafinowanych lub rozbudowanych GUI.
Mam zbudować FSM przed (w różnym rodzaju off aplikacji - głównie w C++) i zacząłem się zastanawiać, czy FSM w GUI jest rzeczywiście używany jako wzorzec i moje podejście, tj. Do sprawdzania kodu ActionListeners, na co użytkownik widzi plus jakie komponenty są włączone lub wyłączone itp., aby określić, czy użytkownik powinien zobaczyć komunikat o błędzie, zamiast być w stanie wykonać określone działanie, np Obietnica przycisku jest w rzeczywistości złym pomysłem dla pełnoprawnych aplikacji GUI.
Więc kiedy zaczynasz projektować GUI oprócz tego, jak wdrożyć MVC, czy dopasowujesz FSM do swojego projektu?
AKTUALIZACJA:
Po przejrzeniu artykułu Dhruva Gairoli w jego komentarzu nadal jestem zdziwiony.
Artykuł wspomina o budowaniu FSM, który faktycznie wiąże się z implementacją kalkulatora, co oznacza, że nawet jeśli zaimplementowano kalkulator pobierając dane przez użytkownika bez GUI, ale za pośrednictwem wiersza poleceń, FSM będzie nadal potrzebny.
Nadal nie jestem pewien, czy FSM do sprawdzania działania użytkownika w każdym momencie, jest popularny lub prawidłowy projekt.
Wygląda na to, że może to wymagać dużego nakładu pracy i wymaga, aby GUI został zaprojektowany z pełnym wyprzedzeniem, a wszystkie możliwe działania użytkownika zostały przyporządkowane do konkretnych wyników w zależności od konkretnych stanów.
Biorąc pod uwagę fakt, że nie było żadnych komentarzy, tylko jedna odpowiedź, mam tendencję do myślenia, że mogą to być FSM (w celu sprawdzenia działań użytkownika w zakresie kontroli) w rzeczywistości nie są używane.Techniki projektowania GUI Java Swing do walidacji działań użytkownika (MVC-FSM)
Wszelkie dane wejściowe są mile widziane.
Dziękuję.
Cóż, masz rację, ale są przypadki, że określone wzorce projektowe są ogólnie uznawane jako jedyna droga. MVC na przykład w aplikacjach komputerowych/internetowych UI. Nie sądzę, że ktokolwiek mógłby twierdzić, że MVC w UI jest dominującym podejściem. Tak więc zastanawiałem się, czy weryfikacja tego, co użytkownik może lub czego nie może dokonać w konkretnym przypadku, jest zwykle kojarzona z FSM – Cratylus
dobrze, widziałem FSM używany jak w http: // cnx.org/content/m17257/latest/ale otrzymuję twoją obawę. być może http://stackoverflow.com/questions/1624516/gui-as-a-finite-state-machine może rzucić trochę światła. hmm, dobre pytanie. –
To świetny artykuł! Naprawdę programuję w GUI, a FSM jest dla mnie jak brakujący element! Zawsze miałem niejasne przeczucie, że czegoś brakuje w tym całym tłumie Swing, BeansBinding, MVC, Validation. Wszystkie odnoszą się do bardzo ważnych aspektów programowania GUI, ale FSM czyni go bardziej kompletnym. Dziękuję, że rzuciłeś na to światło! – Rekin