5

저는 Swing을 사용하여 GUI를 구현했으며 가능한 한 MVC 패턴을 항상 따르려고했습니다.
MVC가 퍼즐의 유일한 부분은 아니지만 궁금합니다.
GUI의 디자인에도 FSM이 사용됩니까?
필자는 GUI에서 FSM을 사용한 적이 없으며 접근 방식은 컨트롤러의 해당 메서드가 호출되어 모델을 업데이트하고 뷰를 업데이트하는 것으로 마무리되었습니다.
일반적으로 사용자의 작업에 의해 트리거 된 요청에 대해 사용자가 종류의 작업을 수행 할 수 있도록 몇 가지 간단한 검사를 사용했습니다. 특정 구성 요소가 활성화 되었습니까? 또는 이런 종류의 레이블을 볼 수 있습니까?
이것은 지금까지는 효과가있는 것처럼 보이지만, 나는 "운이 좋았고"너무 복잡하고 정교한 GUI를 만들지 않아도된다는 것을 인정해야합니다.
전에 다른 종류의 응용 프로그램을 사용하지 않고 (주로 C++에서) FSM을 빌드했으며 GUI의 FSM이 패턴 및 접근 방식으로 실제로 사용되는지 궁금해하기 시작했습니다. 즉, 사용자가 보는 것과 함께 ActionListeners 코드를 확인합니다. 사용자가 특정 동작을 수행 할 수있는 대신에 어떤 오류 메시지를보아야하는지 결정하기 위해 어떤 구성 요소가 사용 가능 또는 사용 불가능인지 등 버튼 약속은 실제로 본격적인 GUI 응용 프로그램에 대한 나쁜 생각입니다.
그래서 MVC를 구현하는 방법 외에도 GUI를 디자인하기 시작할 때 디자인에 FSM을 맞추거나 연관 시키시겠습니까?
업데이트 :
그의 의견에서 Dhruv Gairola 기사를 검토 한 결과, 나는 여전히이 문제에 의문을 제기합니다.
이 기사에서는 계산기 구현에 실제로 바인딩되는 FSM을 작성한다고 언급합니다. 즉, 계산기가 GUI없이 사용자 입력을 얻지 만 명령 줄을 통해 구현되는 경우에도 FSM은 여전히 ​​필요합니다.
FSM이 각 시점에서 사용자의 동작을 검증하는지 여부는 아직 대중적이지 않거나 유효한 디자인인지 확실하지 않습니다.
너무 많은 노력이 필요할 수 있으며 GUI가 사전에 완전히 설계되었으며 모든 가능한 사용자의 작업이 특정 상태에 따라 특정 결과로 매핑되어야합니다.
FSM (컨트롤에 대한 사용자의 동작을 확인하는 데 사용할 수 있음)이 실제 사용되지 않는다고 생각하는 경향이 있다는 사실을 감안할 때 아무런 답변도 없습니다.사용자 동작 검증을위한 Java Swing GUI 디자인 기법 (MVC-FSM)

모든 입력은 매우 환영합니다.
감사합니다.

답변

2

이렇게하면 디자인 패턴이 다른 디자인 원칙을 중심으로 설명합니다. 다양한 것을 캡슐화하고, 프로그램을 인터페이스로 구현하지 말아야한다. 그래서 패턴이나 다른 것을 사용하지 않아도된다. 기본적으로 프로그램이 좋은 디자인 원칙에 부합하는지 확인해야한다. 특정 디자인에 대해 FSM을 사용하면 디자인 감각을 발휘합니다. 일반적으로 패턴은 다른 프로그래머가 자신의 논리를 이해하고 패턴에 대해 알고있는 것을 기반으로 쉽게 확장 할 수 있도록 장려됩니다. theres 당신이 MVC를 사용해야 만한다는 엄격한 규칙이 없다, 당신은 어쩌구를 사용해야합니다 .. 결론 : 당신이 적용하는 패턴이 좋은 디자인 원칙을 준수하는 한 (또는 특정 패턴을 사용하지 않더라도), 그것의 잘 설계되고 잘 다른 사람들이 그것을 확장하고 쉽게 이해할 수 있도록 충분히 잘 확인하십시오. 그게 내 두 센트 야.

+0

글쎄, 당신은 요점이 있지만, 특정 디자인 패턴이 일반적으로 유일한 방법으로 인정되는 경우가 있습니다. 예를 들어 UI 데스크톱/웹 응용 프로그램의 MVC 나는 UI의 MVC가 지배적 인 접근이라고 누구나 주장 할 것이라고 생각하지 않는다. 그래서 사용자가 특정 인스턴스에서 수행 할 수 있거나 수행 할 수없는 작업에 대한 유효성 검사가 일반적으로 FSM – Cratylus

+0

과 관련이 있는지 궁금해졌습니다. http : // cnx와 같이 FSM이 사용되는 것을 보았습니다.org/content/m17257/latest/그러나 나는 당신의 걱정을 얻는다. 아마도 http://stackoverflow.com/questions/1624516/gui-as-a-finite-state-machine이 약간의 빛을 발산 할 수도 있습니다. 흠, 좋은 질문입니다. –

+0

멋진 기사입니다! 나는 GUI 프로그래밍을하고 FSM은 빠진 조각처럼 나를 위해있다! 나는 항상이 전체 Swing, BeansBinding, MVC, Validation 군중에 뭔가 빠져 있다는 모호한 느낌을 가지고있었습니다. 이 모든 것들은 GUI 프로그래밍의 매우 중요한 측면을 다루지 만 FSM은이를 더욱 완벽하게 만듭니다. 그것에 빛을 내 주셔서 감사합니다! – Rekin