Usamos un 'armazón' de State Machine (basado en el patrón de estado) que no expone su estado actual, lo que a veces significa que tengo que hacer cosas de una manera indirecta.¿Debería una máquina de estados exponer su estado actual?
Cuando cuestioné esta decisión de diseño, una de las justificaciones fue que "si necesita conocer el estado actual, lo está utilizando mal".
¿Es esto correcto? No soy muy experto en máquinas de estado.
(lo que pido aquí porque sé que tengo un sesgo inherente contra el Patrón de Estado, que me parece demasiado prolijo.)
Ejemplo
Imagine un sistema que en una de indica que lee dos sensores. Un sensor da un valor numérico, el otro da un booleano que le dice si el primero es "confiable" o no. El sistema genera un valor que es el valor "bueno" actual, o una interpolación (o algún otro cálculo de fantasía) basado en los últimos n buenos valores.
Mi idea sería tener dos subestados: uno "bueno" y el otro "no". Y cuando llega un nuevo valor, me gustaría preguntarle a la máquina de estados cuál es su estado para que sepa cómo manejar la interpolación.
(creo que he respondido a mi pregunta: ¿la solución sería tener un evento NewDataValue(val)
en la máquina de estados, que serían solamente hacia delante el valor del estado 'bueno'?)
+1 ¡Tengo que decir que estoy iluminado! – Nilesh
Tenía un ejemplo (vea mi pregunta actualizada), pero creo que lo he respondido yo mismo :) – Benjol