首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >静态工厂方法(Spring)

静态工厂方法(Spring)
EN

Stack Overflow用户
提问于 2010-03-25 20:25:56
回答 2查看 2.6K关注 0票数 4

在Spring Framework中使用静态工厂方法实例化bean有什么优势和用途?

EN

回答 2

Stack Overflow用户

发布于 2010-03-25 20:49:52

使用静态工厂方法实例化bean的优势不一定来自Spring,它只是一个IoC容器。

来自Effective Java Idiom#1的一些建议,提供静态工厂与从构造函数创建对象相比具有以下优势:

与Constructor.

  • You相比,
  1. 为您的方法提供了更具表现力的名称,您可以跳过实际的对象创建并提供代理。
  2. 您可以返回方法返回类型的子类型。

我发现这个习惯用法的最大优点是具有相似签名的命名方法。

例如,如果您有:

代码语言:javascript
复制
    Person {
    String name;
    String[] booksAuthored;
    //... constructors, getters, setters
  }

然后,您可以通过调用以下命令来创建实例:

代码语言:javascript
复制
Person joshTheProgrammer = Person.createByName("Joshua Bloch");

代码语言:javascript
复制
Person joshTheAuthor = Person.createByBookName("Effective Java");

在使用构造函数时不能这样做,因为只能有一个接受字符串的构造函数。

票数 7
EN

Stack Overflow用户

发布于 2010-03-26 20:34:52

我想补充的是,也许有些第三方库仅仅依赖于使用工厂方法。因此,您可能不希望(甚至不能)将代码更改为简单的DI兼容。因此,在这种情况下,您可以将遗留代码与依赖注入集成在一起,尽管它最初并不是设计用于此类场景的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2515367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档