3

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

当主窗体中的代码开始增长时,窗体被划分为多个用户控件。

但这就是让我烦恼的地方。表单和用户控件应该只是 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 分开,并且没有“主窗体”作为应用程序的主要组件或控制器

4

1 回答 1

1

您可以使用设计模式,例如:

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

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

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

于 2013-08-21T12:05:44.203 回答