我有一个长期运行的后台工作人员控件,它作为我的主要表单的一部分存在。到现在为止,这个工人的方法还没有做太多的事情。但是在worker方法中增加了一些新特性和一些更好的错误检测,这意味着它现在已经有点臃肿了,从worker方法中提取了一些方法。
后台工作人员所做的主要工作是在面板控件中加载和显示的用户控件的许多实例上执行方法。后台工作者和所有用户控件都是主窗体的子窗体。由于后台工作人员现在变得相当大,我认为是时候将后台工作人员(或至少是方法)提取到自己的类中,以使将来的更改更容易,提高可读性并简化后台工作人员方法之间的数据访问。
我的问题是,我应该如何构建关于用户控件和主窗体的新类?
我的想法一直...
- 在后台工作人员开始时将用户控件的所有引用传递到新类中。这将像以前一样保持父子兄弟关系,但我不知道将 UI 元素引用传递给非 UI 类是否是一个坏主意。也不是很抽象。
- 使用新类中的事件让主窗体执行用户控件中的方法。这感觉很混乱,不必要且容易破坏。会很抽象。
- 一些如何使新类成为用户控件所有实例的父类。我觉得主窗体应该是用户控件的父窗体,因为它们都是 UI 元素,而新类将没有 UI 元素。虽然我觉得这提供了更好的结构但更少的抽象(见下文)。
我认为我在 UI 和功能方面正在与程序层次结构作斗争。控件的显示比功能更重要还是相反?我觉得这个函数应该从 UI 中尽可能抽象,UI 实际上只是在命令行程序中设置参数的一种奇特方式。我还认为抽象是我目前的流行哲学(我已经通过微控制器学习了编程,但它并不重要。)
这是漫长的一天,我不确定这是否有意义。请随时纠正我,我会尽力澄清任何太令人困惑的事情。提前致谢。