.net - GUI 作为有限状态机

标签 .net winforms user-interface design-patterns

为了实现应用程序的 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 是否以某种方式支持它?如果没有,这听起来是一个很好的实现想法吗?谢谢!

最佳答案

State design pattern描述如何实现有限状态机。

有许多略有不同的设计模式来控制 UI 中的屏幕,但我认为 Application Controller design pattern适合您想要做的事情。

关于.net - GUI 作为有限状态机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1624516/

上一篇:haskell - 递归 haskell

下一篇:Haskell 分析

相关文章:

c# - Entity Framework /Linq 表达式从字符串转换为 int

.net - 在哪里可以将我的log4net日志文件写入ClickOnce下?

c# - 如何将datagridview中的单元格值保存到列表<list<>>

java - 为什么在java中显示squere for\u0085?

c# - 安装 msi 后运行 exe,我看到启动复选框,但应用程序未运行

c# - Azure Pipeline 部署到 Web 应用服务失败,缺少必需的属性 'OutputPath'

c# - .NET 定时器 Controller 的内部

c# - 是否可以创建可以在 Windows 中以编程方式登录用户的服务或应用程序

Git GUI 类似于 MS Windows 中的 HG Workbench

user-interface - AppleScript:获取所有桌面上的窗口列表