gpt4 book ai didi

dependency-injection - 依赖注入(inject)——需要更大的例子吗?

转载 作者:行者123 更新时间:2023-12-04 08:22:52 25 4
gpt4 key购买 nike

我正在寻找一个更大的依赖注入(inject)示例以及如何实现它。如果 A 类依赖于 B 类并将 C 类的引用传递给 B 的构造函数,那么 A 类是否也不能在其构造函数中引用 C 类?这意味着应用程序中的主要方法应该真正创建所有类,这听起来很奇怪?

我知道使用 DI 框架我们可以以某种方式将它包含在 XML 文件中,但这听起来很难快速查看真正实例化的类型?特别是如果它是一个非常大的应用程序。

最佳答案

您是对的,每个 DI 框架都有不同的管理方式。

有些使用属性等属性来表示依赖关系,然后“自动”提供正确类型的实例,而其他一些(比如 .net 的 caSTLe windsor)允许 xml 配置、fluent 或其他方法“连接”依赖图。

同样不,类 A 对 B 的实例进行了构建引用,该实例是使用 C 的实例构建的。除非通过 B 公开,否则 A 不需要知道 C 的任何信息。

    public class C { }

public class B { public B(C c) { ... }}

public class A { public A(B b) { ... }}

// manual wireup
C c = new C();
B b = new B(c);
A a = new A(b);

// DI framework
InversionOfControlContainer container = new InversionOfControlContainer(... some configuration);
A a = container.ResolveInstanceOf<A>();
// container dynamically resolves the dependencies of A.
// it doesnt matter if the dependency chain on A is 100 classes long or 3.
// you need an instance of A and it will give you one.

希望对您有所帮助。

关于dependency-injection - 依赖注入(inject)——需要更大的例子吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3997382/

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