工厂方法,为什么我们使用静态调用从工厂获取对象

时间:2013-08-27 11:53:25

标签: java design-patterns factory-pattern static-factory

到目前为止,我的理解是在使用工厂方法时,我们通过调用工厂的静态方法来获取对象..就像Foo f = Factory.getObj()一样..方法是静态的,因为我们不需要创建一个在调用getObj方法之前的对象,它将实际返回我想要的具体对象。但是为什么使用Factory创建new Factory()类的实例然后调用req getObj方法并不常见? 对不起,如果这听起来很愚蠢,但为什么将工厂方法设为静态是很常见的?

也是静态工厂和工厂两个不同的东西?

2 个答案:

答案 0 :(得分:2)

你必须问自己:

Factory类的不同对象会有不同的行为吗?在这种情况下,他们会以不同的方式创建新对象吗?

答案是。如果方法不是对象范围,则它是static的完美候选。

答案 1 :(得分:2)

您应该阅读Effective Java Item 1: Consider static factory methods instead of constructors。那里有详细的解释。此外,经典的工厂方法设计模式http://en.wikipedia.org/wiki/Factory_method_pattern不是静态的。所以它可以两种方式使用。