我知道 Spring 中有基于构造函数的注入和基于二传手的注入。何时应使用工厂方法注入豆类?
这是一个设计问题,取决于你的架构。
如果您有带有静态工厂方法的类,为什么要添加不必要的构造函数来破坏设计以适应 DI 框架?
它是不灵活的,因此Spring支持两种方式。
摘自Joshua Bloch"Effective Java">:
第 1 项:考虑静态工厂方法而不是构造函数。
静态工厂方法优点:
- 他们有名字。
- 它们不需要在每次调用时创建新对象。
- 它们可以返回其返回类型的任何子类型的对象。
- 它们减少了创建参数化类型实例的详细程度。
静态工厂方法的缺点:
- 仅提供静态工厂方法时,没有公共或受保护构造函数的类不能被子类化。
- 它们不容易与其他静态方法区分开来