5

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ę.

Odpowiedz

2

ułóżmy to w ten sposób - wzorce projektowe są głównie opracowaniami różnych zasad projektowania, np. enkapsulują to, co się zmienia, program do interfejsu, nie implementacja itp., więc nie jest tak, że MUSISZ użyć wzorca lub czegoś, zasadniczo upewnij się, że sposób, w jaki programujesz, jest zgodny z zasadami dobrego projektowania. jeśli użycie FSM dla konkretnego projektu nadaje sens projektowy, id radzi, abyś go użył. Zazwyczaj zachęca się wzorców, aby inni programiści mogli zrozumieć Twoją logikę i łatwo ją rozbudować na podstawie tego, co wiedzą o wzorcu. nie ma sztywnej zasady mówiącej, że MUSISZ użyć MVC, MUSISZ użyć bla bla bla .. wniosek: tak długo, jak wzór jaki stosujesz jest zgodny z zasadami dobrego projektowania (lub nawet jeśli nie używasz określonego wzorca), upewnij się, że jest dobrze zaprojektowany i wystarczająco dobry, aby inni mogli go łatwo rozwinąć i zrozumieć. to moje dwa centy warte ..

+0

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

+0

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. –

+0

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