【问题标题】:static factory method (Spring)静态工厂方法(Spring)
【发布时间】:2010-03-25 12:25:55
【问题描述】:

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

【问题讨论】:

  • 有很多优点,我建议你阅读Manning spring in action,2007年出版的具体细节和例子。

标签: spring


【解决方案1】:

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

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

  1. 为您的方法提供一个比构造函数更具表现力的名称。
  2. 您可以跳过实际的对象创建并提供代理。
  3. 您可以返回方法返回类型的子类型。

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

例如,如果您有:

    Person {
    String name;
    String[] booksAuthored;
    //... constructors, getters, setters
  }

然后你可以通过调用这些来创建实例:

Person joshTheProgrammer = Person.createByName("Joshua Bloch");

Person joshTheAuthor = Person.createByBookName("Effective Java");

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2012-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-04
      • 1970-01-01
      相关资源
      最近更新 更多