据我的理解,在使用工厂方法时,我们通过调用工厂的静态方法来获取对象.. 就像Foo f = Factory.getObj()
.. 该方法被设为静态,因为我们不需要在调用getObj
方法之前创建对象,这实际上会返回我想要的具体对象。Factory
但是为什么使用 req getObj 方法创建类的实例new Factory()
然后调用它是不常见的呢?对不起,如果这听起来很愚蠢,但为什么将工厂方法设为静态是很常见的?
静态工厂和工厂也是两个不同的东西吗?
据我的理解,在使用工厂方法时,我们通过调用工厂的静态方法来获取对象.. 就像Foo f = Factory.getObj()
.. 该方法被设为静态,因为我们不需要在调用getObj
方法之前创建对象,这实际上会返回我想要的具体对象。Factory
但是为什么使用 req getObj 方法创建类的实例new Factory()
然后调用它是不常见的呢?对不起,如果这听起来很愚蠢,但为什么将工厂方法设为静态是很常见的?
静态工厂和工厂也是两个不同的东西吗?
你必须问自己:
Factory 类的不同对象会有不同的行为吗?在这种情况下,他们会以不同的方式创建新对象吗?
答案是否定的。如果一个方法不是对象作用域的,那么它就是static
.
你应该阅读Effective Java Item 1: Consider static factory methods instead of constructors
。那里有详细的解释。此外,经典的工厂方法设计模式http://en.wikipedia.org/wiki/Factory_method_pattern不是静态的。所以它可以双向使用。