0

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

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

4

2 回答 2

1

你必须问自己:

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

答案是否定的。如果一个方法不是对象作用域的,那么它就是static.

于 2013-08-27T11:55:25.217 回答
1

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

于 2013-08-27T11:56:00.903 回答