gpt4 book ai didi

c# - 启动时对象初始化的模式

转载 作者:太空宇宙 更新时间:2023-11-04 14:59:10 24 4
gpt4 key购买 nike

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

例如,我有一个 WinForm,它接受一个“Controller”类和 2 个事件。 Controller 需要被告知来自 WinForm 的 DataGridView 的存在,所以它有一个方法

Controller::SetDataGridReference(DataGridView^ dgv)

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

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

我真的不认为语言很重要

最佳答案

这看起来像是使用依赖注入(inject) (DI) 的教科书案例。它肯定会对您的意大利面条式代码有所帮助,甚至可以协助进行单元测试。如果您想逐步迁移到 DI,您可能需要考虑重构具有相似关系的对象,并使用几组工厂类来处理所有样板链初始化以及集中代码库中所有发生的地方.

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

关于c# - 启动时对象初始化的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1080458/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com