Para implementar la GUI de la aplicación, me gustaría tener toda la lógica para pasar de una forma a otra centralizada. Este administrador de GUI se comportará como una máquina de estado finito. Aunque creo que he visto este tipo de implementación en algún lugar, no puedo encontrar un patrón de diseño que coincida con este tipo de solución.GUI como máquina de estados finitos
Una forma será así:
public class Login : Form
{
...
private void EnterButton_Click()
{
...
string user = loginTextBox.Text;
string password = passwordTextBox.Text;
bool isValid = SecurityManager.CheckUserLogin(user,password);
GUIManager.FormEnd(FormLogin,new LoginData(user, pass, isValid));
}
...
}
Y el gestor de interfaz gráfica de usuario va a hacer algo como esto:
public class GUIManager
{
...
public void FormEnd(FormType type, FormData data)
{
switch (type)
{
...
case FormLogin:
LoginData ld = (LoginData)data;
if (ld.Valid)
{
m_loginForm.Hide();
m_mainForm.Show();
}
...
}
}
...
}
Llegados a este punto tengo las siguientes preguntas: ¿existe un patrón el desing que formaliza esta idea? Si existe, ¿lo soporta .NET de alguna manera? Si no lo hay, ¿suena como una buena idea de implementación? ¡Gracias!
+1 FSM para GUI es una muy buena idea! Tal vez podrías crear una DSL basada en XML para este propósito ... – ATorras
En realidad, es una buena idea, y estoy cansado de navegar por el interminable mar de Microsoft infoclutter. Un montón de publicidad publicitaria en el enlace de Travis. Pero cuando leo los detalles, no veo ningún gran concepto. Solo la misma vieja basura. Te sugiero que sigas tu idea y trates de mantenerla impulsada por los datos. Después de todo, así es como se ven la mayoría de las máquinas de estado. –