【发布时间】:2013-08-30 03:41:27
【问题描述】:
据我所知,在使用工厂方法时,我们通过调用工厂的静态方法来获取对象 .. 像 Foo f = Factory.getObj() .. 该方法是静态的,因为我们之前不需要创建对象调用getObj 方法实际上将返回我想要的具体对象。但是为什么使用new Factory() 创建Factory 类的实例然后调用req getObj 方法并不常见呢?
对不起,如果这听起来很愚蠢,但为什么将工厂方法设为静态是很常见的?
静态工厂和工厂也是两个不同的东西吗?
【问题讨论】:
-
工厂方法确保类中只引用一个实例。在这种情况下,我认为构造函数是私有的,因此不允许直接创建一个对象。它需要通过 getObj 或 getInstance 等公共静态方法创建
-
同意,工厂的构造函数应该是私有的,只是为了保证工厂的实例只存在一个?
-
检查那些:Static vs non-static 和 Constructor vs factory,它们应该可以帮助您理解。还有这个one too
标签: java design-patterns factory-pattern static-factory