gpt4 book ai didi

java - 使用这种方法注入(inject)并与Java中的构造函数注入(inject)进行比较

转载 作者:行者123 更新时间:2023-12-01 14:04:41 25 4
gpt4 key购买 nike

我见过几个倾向于使用方法注入(inject)的框架,例如:

public abstract class MyClass {
/** Create the class here */
protected abstract Prototype createPrototype();

public void doSomething() {
createPrototype().foo();
}
public void doSomethingElse() {
createPrototype().bar();
}
}

他们可能会使用匿名内部类来添加自定义功能/创建您喜欢的对象:

   new MyClass() {
createPrototype() {
return prototype;
}
}

还有其他支持构造函数注入(inject)的人,例如 guice。

与构造函数注入(inject)相比有优势吗?使用方法注入(inject)是一个好的做法吗?

最佳答案

在一些罕见的情况下,基于构造函数的依赖注入(inject)是不可能的,但是我认为通常认为使用构造函数而不是基于方法的 DI 更好,因为这样你的对象就可以在一切准备就绪的情况下进行初始化,并且如果缺少某些东西,那么您可以在对象构造中一次性发现它。此外,您通常不想在设置依赖项后弄乱它们,因此为它们添加大量 setter 会在某种程度上破坏封装。如果您不想使用 setter,那它还有什么意义呢?

关于java - 使用这种方法注入(inject)并与Java中的构造函数注入(inject)进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19007722/

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