我已经看到了一些倾向于使用方法注入的框架,例如:
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;
}
}
然后是其他支持构造函数注入的对象,例如guice。
比构造函数注入有优势吗?使用方法注入是否是一种好习惯?
在某些罕见的情况下,不可能进行基于构造函数的依赖注入,但是我认为通常认为最好使用基于构造函数的DI而不是基于方法的DI,因为那样的话,您的对象将在所有准备就绪的情况下进行初始化,并且如果有的话如果错过了,那么您可以一口气在对象构造中一网打尽。同样,在设置依赖项后,您通常也不想弄乱它们,因此为它们添加大量的setter可能会破坏封装。如果您永远不想使用二传手,那有什么意义呢?
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句