到目前为止,我的理解是在使用工厂方法时,我们通过调用工厂的静态方法来获取对象..就像Foo f = Factory.getObj()
一样..方法是静态的,因为我们不需要创建一个在调用getObj
方法之前的对象,它将实际返回我想要的具体对象。但是为什么使用Factory
创建new Factory()
类的实例然后调用req getObj方法并不常见?
对不起,如果这听起来很愚蠢,但为什么将工厂方法设为静态是很常见的?
也是静态工厂和工厂两个不同的东西?
答案 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不是静态的。所以它可以两种方式使用。