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

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

静电厂和工厂也是两回事吗?

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

你必须问自己:

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

答案是否定的 。 如果方法不是对象作用域 ,则它是static的完美候选者。