启动时对象初始化的模式

Eri*_*ric 0 .net c# c++ java oop

我正在构建一个应用程序,随着时间的推移,我有越来越多的对象在启动时初始化.转移,一些较新的对象依赖于其他对象,所以我得到某种spaggetti初始化,其中创建对象然后传递给其他构造函数.我怀疑我弄错了.

例如,我有一个WinForm,它接受一个"Controller"类和2个事件.需要告诉控制器WinForm中是否存在DataGridView,因此它有一个方法

Controller::SetDataGridReference(DataGridView^ dgv)
Run Code Online (Sandbox Code Playgroud)

是否有一种通用方法在启动时实例化对象然后将这些对象引用到彼此?

我被告知将所有必需的类作为构造函数参数是一个很好的做法,但坦率地说,我不知道如何在这里做到这一点.

我并不认为语言很重要

Sca*_*rew 5

这看起来像是使用依赖注入(DI)的教科书案例.它肯定有助于您的意大利面条代码,甚至可以协助单元测试.如果你想对DI逐步迁移,你可能要考虑重构与相似关系的对象,并使用几套工厂类,可以处理所有的样板链intialization以及集中,发生在你的代码库,所有.

我可以推荐Google Guice作为Java的优秀DI框架.即使你不使用Java,它也是一个很好的DI模型,可以与其他语言的DI框架进行比较