【发布时间】:2010-03-25 12:25:55
【问题描述】:
使用静态工厂方法在 Spring Framework 中实例化 bean 有什么好处和用途?
【问题讨论】:
-
有很多优点,我建议你阅读Manning spring in action,2007年出版的具体细节和例子。
标签: spring
使用静态工厂方法在 Spring Framework 中实例化 bean 有什么好处和用途?
【问题讨论】:
标签: spring
使用静态工厂方法进行 bean 实例化的优势不一定来自 Spring,它只是一个 IoC 容器。
来自Effective Java Idiom#1 的一些建议,提供静态工厂比从构造函数创建对象具有以下优势:
我发现这个习惯用法的最大优势在于具有相似签名的命名方法。
例如,如果您有:
Person {
String name;
String[] booksAuthored;
//... constructors, getters, setters
}
然后你可以通过调用这些来创建实例:
Person joshTheProgrammer = Person.createByName("Joshua Bloch");
或
Person joshTheAuthor = Person.createByBookName("Effective Java");
在使用构造函数时不能这样做,因为你只能有一个接受字符串的构造函数。
【讨论】:
我想补充一点,有些第三方库可能只是依赖于使用工厂方法。因此,您可能不希望(甚至不能)将代码更改为简单的 DI 兼容。因此,在这种情况下,您可以将遗留代码与依赖注入集成,尽管它最初并非设计用于此类场景。
【讨论】: