静态工厂方法(Spring)

时间:2010-03-25 12:25:56

标签: spring

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

2 个答案:

答案 0 :(得分:7)

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

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

  1. 使您的方法比Constructor更具表现力。
  2. 您可以跳过实际的对象创建并提供代理。
  3. 您可以返回方法返回类型的子类型。
  4. 我发现这个成语的最大优势在于命名具有相似签名的方法。

    例如,如果你有:

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

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

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

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

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

答案 1 :(得分:0)

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