通过这种方法注入方法,并与Java中的构造函数注入方法进行了比较

柏林布朗

我已经看到了一些倾向于使用方法注入的框架,例如:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

构造函数注入与方法注入

通过java中的多种方法进行比较

在Startup类的Configure()方法中,服务的方法注入或构造函数注入之间有区别吗?

构造函数注入和方法用法

构造函数依赖注入的替代方法

Laravel构造函数和方法注入

构造函数注入找不到符号方法注入成员

是否可以知道以哪种方法对文件进行了加密?

Unity-通过调用类的方法将对象注入构造函数

有没有混蛋注射的替代方法?(又名穷人通过默认构造函数注入)

使用依赖注入通过构造函数反射调用c#类方法

使用方法而不是构造函数注入服务

不变构造函数注入Kotlin类的正确方法

Symfony 4服务依赖注入-构造函数与方法

如何使WireBox注入的依赖项可用于构造函数方法?

如何在构造函数中注入 lambda 方法?

Java构造函数注入

should_receive还对方法进行了存根

有没有一种方法可以检查用户是否对您的应用进行了评分?

Java Spring Boot 构造函数方法依赖注入实际上是如何工作的

扩展方法中的方法注入

SQL Server-@@ ROWCOUNT的替代方法,用于检查表中是否进行了UPDATE

通过构造函数或属性设置器进行依赖注入?

通过构造函数参数与Injector服务进行注入

在这种情况下,通过构造函数或显式函数进行隐式转换的更好的方法是什么?

c ++:继承构造函数,但通过编辑构造函数中调用的方法进行更改

TypeScript继承和注入的构造方法参数

在非构造方法中用Guice注入依赖

Wildfly 8和通过提供者方法进行的焊缝CDI注入不会注入依赖项