yey*_*man 12 .net user-interface design-patterns winforms
为了实现应用程序的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));
}
...
}
Run Code Online (Sandbox Code Playgroud)
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();
}
...
}
}
...
}
Run Code Online (Sandbox Code Playgroud)
达到这一点,我有以下几个问题:是否有一个设计模式正式化这个想法?如果有,.NET会以某种方式支持它吗?如果没有,这听起来像是一个好的实现想法吗?谢谢!
这是个好主意!太好了,事实上,它以前已经完成了,并且可能是可扩展应用程序开发中最常用的模式(想想像 Visual Studio、Eclipse 之类的 IDE)。
例如,来自 MS 模式和实践组的SCSF(利用 CAB)使用这种开箱即用的模式在 WinForms 和 WPF 中构建可插入和可扩展的复合应用程序。它使用的实际模式涉及构建称为 WorkItems 的分层状态机,用于控制用例和流经应用程序。在我将它作为我自己的创意实施之前,我会研究模式和实践人员是如何做到的。我已经在很多场合使用过它,它非常值得。