5

Implementé GUIs usando Swing y siempre traté de seguir el patrón de MVC tanto como pude.
Me preguntaba si MVC no es la única parte del rompecabezas.
¿Los FSM también se utilizan en el diseño de GUI?
Nunca he usado un FSM en una GUI y mi enfoque fue: en la acción, se llamó al método correspondiente del controlador, para actualizar el modelo, terminando con la actualización de la vista.
Generalmente, a petición de una acción del usuario, utilicé algunas comprobaciones simples para asegurarme de que el usuario pueda hacer la acción del tipo: ¿está habilitado un componente específico? o es la etiqueta visible de este tipo? etc.
Esto parece funcionar hasta ahora, pero tengo que admitir que tuve "suerte" y no tuve que compilar GUI complicadas, sofisticadas o elaboradas.
Tengo FSMs de compilación antes (en diferentes aplicaciones tipo off -principalmente en C++) y comencé a preguntarme si FSMs en GUIs se usa realmente como un patrón y mi enfoque, es decir, hacer verificaciones en el código de ActionListeners, en lo que ve el usuario más qué componentes están habilitados o deshabilitados, etc. para determinar si el usuario debería ver algún mensaje de error en lugar de poder realizar la acción específica que, por ejemplo, las promesas del botón son en realidad una mala idea para las aplicaciones de GUI completas.
Entonces, cuando se empieza a diseñar una GUI además de cómo implementar la MVC, ¿encaja/asocia un FSM en su diseño?
ACTUALIZACIÓN:
Después de revisar el artículo de Dhruv Gairola en su comentario, todavía estoy desconcertado sobre esto.
El artículo menciona la construcción de un FSM que, de hecho, se vincula a la implementación de la calculadora, lo que significa que incluso si la calculadora se implementara obteniendo la entrada del usuario sin una GUI pero a través de la línea de comando, aún se necesitaría FSM.
Todavía no estoy seguro de si las FSM para validar la acción del usuario en cada punto en el tiempo, es un diseño popular o válido.
Parece que podría ser demasiado esfuerzo y requiere que la GUI se haya diseñado por adelantado y que todas las acciones posibles del usuario se hayan asignado a resultados específicos en función de los estados específicos.
Dado que no ha habido más comentarios que una sola respuesta, estoy tendiendo a pensar que pueden ser FSM (para validar las acciones de un usuario en los controles) en realidad no se utilizan.Técnicas de diseño de GUI de Java Swing para validación de acciones de usuario (MVC-FSM)

Cualquier comentario al respecto es muy bienvenido.
Gracias.

Respuesta

2

digámoslo así: los patrones de diseño son principalmente elaboraciones de los diferentes principios de diseño, p. encapsular lo que varía, programar en una interfaz, no en una implementación, etc. por lo que no es necesario tener un patrón ni nada, básicamente, asegúrese de que la forma en que programa se ajuste a los buenos principios de diseño. Si usar FSM para un diseño en particular tiene sentido desde el punto de vista del diseño, te aconsejo que lo hagas. por lo general, se recomiendan los patrones para que otros programadores puedan comprender su lógica y ampliarla fácilmente en función de lo que saben sobre el patrón. no hay una regla rígida que diga que TIENE que usar MVC, TIENE que usar blah blah blah .. conclusión: siempre que el patrón que está aplicando cumpla con los buenos principios de diseño (o incluso si no está usando un patrón específico)), asegúrese de que esté bien diseñado y lo suficientemente bien para que otros se expandan y entiendan fácilmente. Esos son mis dos centavos que valen la pena ...

+0

Bueno, usted tiene razón, pero hay casos en que los patrones de diseño específicos son generalmente reconocidos como el único camino a seguir. MVC, por ejemplo, en aplicaciones de escritorio/web de UI. No creo que nadie discuta que MVC en UI sea el enfoque dominante. Así que me preguntaba si la validación de lo que el usuario puede o no puede hacer en una instancia específica, comúnmente se asocia con un FSM – Cratylus

+0

, he visto que se usa FSM como en http: // cnx.org/content/m17257/latest/pero me interesa. quizás http://stackoverflow.com/questions/1624516/gui-as-a-finite-state-machine podría arrojar algo de luz. hmm, buena pregunta. –

+0

¡Es un gran artículo! ¡Realmente estoy en la programación de GUI y el FSM es para mí como una pieza perdida! Siempre tuve la vaga sensación de que faltaba algo en todo este grupo de Swing, BeansBinding, MVC, Validation. Todos abordan aspectos muy importantes de la programación de GUI, pero FSM lo hace más completo. ¡Gracias por arrojar luz sobre eso! – Rekin