使用静态工厂方法在Spring Framework中实例化bean有什么优势和用途?
答案 0 :(得分:7)
使用静态工厂方法进行bean实例化的优点不一定来自Spring,它只是一个IoC容器。
提供静态工厂的Effective Java成语#1的一些建议与从构造函数创建对象相比具有以下优点:
我发现这个成语的最大优势在于命名具有相似签名的方法。
例如,如果你有:
Person {
String name;
String[] booksAuthored;
//... constructors, getters, setters
}
然后你可以通过调用这些来创建实例:
Person joshTheProgrammer = Person.createByName("Joshua Bloch");
或
Person joshTheAuthor = Person.createByBookName("Effective Java");
使用构造函数时不能这样做,因为你只能有一个接受String的构造函数。
答案 1 :(得分:0)
我想补充一点,即某些第三方图书馆可能只依赖于使用工厂方法。因此,您可能不希望(甚至不能)将代码更改为简单的DI兼容。因此,在这种情况下,您可以将遗留代码与依赖注入集成在一起,尽管它最初并不是设计用于这种情况。