Подтвердить что ты не робот

GUI как конечный автомат

Чтобы реализовать графический интерфейс приложения, я хотел бы, чтобы вся логика переходила от одной формы к другой централизованной. Этот GUI-менеджер будет вести себя как конечный автомат. Хотя я думаю, что я видел такую ​​реализацию где-то, я не могу найти шаблон дизайна, соответствующий этому решению.

Форма будет выглядеть так:

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));
    }

    ...
}

И менеджер GUI сделает что-то вроде этого:

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();
                }
            ...
        }
    }

    ...
}

Достигнув этого момента, у меня есть следующие вопросы: есть ли шаблон оформления, который формализует эту идею? Если это так, поддерживает ли .NET каким-то образом? Если этого не происходит, это звучит как хорошая идея реализации? Спасибо!

4b9b3361

Ответ 1

Отличная идея! Настолько замечательно, что это было сделано раньше и, вероятно, наиболее распространенный шаблон, используемый в расширяемой разработке приложений (подумайте о IDE, таких как Visual Studio, Eclipse и т.п.).

Один пример, SCSF (который использует CAB), из группы шаблонов и практик MS, использует этот шаблон вне зависимости от того, чтобы создавать подключаемые и расширяемые составные приложения как в WinForms, так и в WPF. Фактический шаблон, который он использует, включает в себя построение иерархических состояний машин под названием WorkItems, которые управляют usecases и протекают через приложение. Я бы посмотрел, как ребята сделали это, прежде чем я реализую его как свое детище. Я использовал его во многих случаях, и это того стоит.

Ответ 2

Шаблон состояния штата описывает, как реализовать конечный конечный автомат.

В пользовательском интерфейсе есть несколько, немного разных шаблонов дизайна, но я думаю, что шаблон дизайна

Ответ 3

В мире Java вы можете придумать приложение Struts или JSF как FSM (это событие на этой странице/состоянии приведет нас к этой странице/состоянию.

При моделировании потоков в традиционном веб-интерфейсе пользователь нашел, что использование FSM является чрезвычайно полезным инструментом анализа. Вы можете очень быстро понять суть поведения приложения. Между страницей и штатом было много взаимно однозначного соответствия. У меня была бы модель состояния и связанные модели данных.

Теперь у нас более богатые пользовательские интерфейсы, использующие AJAX, соответствие между состояниями приложений и "страницами" менее очевидно. Однако вы все же можете рассуждать о поведении приложения: здесь пользователь делает это, когда они закончили, он может предпринять действия X или Y, а затем они могут это сделать. Таким образом, состояния, события и переходы все еще существуют, так как их представление является немного более "виртуальным".