构建应用程序的“主要形式”思想的其他替代方案

时间:2013-08-12 17:56:23

标签: c# .net winforms architecture

我读过的关于winform应用程序的大多数问题都有一个表单类作为包含所有应用程序的主表单,并使用此主表单调用Application.Run

当主窗体中的代码开始增长时,表单被分为用户控件no。

但这就是令我烦恼的事。表单和用户控件应该只是UI控件,它们不应包含程序的任何逻辑。

但是,从打开应用程序到应用程序结束,处理应用程序生命周期的“主要形式”理念仍有广泛的用途。

为避免这种情况,我尝试在单独的静态“管理器”类中提供程序逻辑,这些类管理程序的不同部分,并使用主窗体管理它们。

例如,我有以下“ThemesManager”类

            public static class ThemesManager
            {
                public static void InstallTheme(string themefile) { }
                public static void ApplyTheme(Theme theme) { }
                public static void RemoveTheme(Theme theme) { }
                public static Theme[] GetThemes() { }
            }

并以主要形式

            public class MainForm
            {
                void InstallTheme_Click(object sender, EventArgs args)
                {
                // Call THeme.Install
                }

                void RemoveTheme_Click(object sender, EventArgs args)
                {
                // Call THeme.Remove
                }
            }

现在应用程序逻辑以某种方式分离,但我认为我正在破坏具有如此多静态类的应用程序体系结构,因为许多类依赖于它们。例如,显示主题的用户控件使用ThemesManager.GetThemes()。我觉得我正在以这种方式失去OOP的基本概念

那么还有什么其他选择可以将逻辑与UI分开,而不是将“主窗体”作为应用程序的主要组件或控制器

1 个答案:

答案 0 :(得分:1)

您可以使用以下设计模式:

  • 模型 - 视图 - 演示者(MVP);
  • Model-View-ViewModel(MVVM);
  • 模型 - 视图 - 控制器(MVC)。

它们非常适合将逻辑层与用户界面层分开。 您可以看到一些示例here。这个适用于Model-View-ViewModel(MVVM)并适用于我。

设计模式的好处在于它们使您的代码可以测试。