2010-03-25 97 views
4

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

+1

有很多优点,我建议你阅读Manning spring的行动,2007年发布具体的细节和例子。 – ant 2010-03-25 12:36:47

回答

7

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

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

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

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

例如,如果您有:

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

然后你就可以通过调用创建情况下,这些:

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

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

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

0

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