创建对象 - 工厂方法

时间:2012-08-26 19:10:06

标签: java design-patterns

对于一个小型系统,我使用工厂方法创建相关对象(从父类继承),这样我就可以动态创建对象而无需指定对象的类型。我必须创建另一个没有子类的对象,并且该对象是用户类的实例。要正确理解工厂方法模式,我不必为最后一个类创建工厂方法吗?

2 个答案:

答案 0 :(得分:1)

工厂模式不仅仅是关于类型的灵活性。例如,Java已经Integer.valueOf(int),尽管它已经有new Integer(int)。工厂变体允许缓存Integer.valueOf(1)的每次调用都将返回相同的实例。这适用于所有不可变对象。

另一个非常重要的考虑因素是对象初始化:有些初始化模式在构造对象时无法完成。例如,调用任何可覆盖的方法。这些案例也通过工厂模式优雅地解决。

我个人会争论第三个好处,但这可能会引起一些争议:我更喜欢编写没有new的代码。例如,我想写new OidableBinding(vb)而不是oidableBinding(vb)。这可以通过静态导入实现。所以请注意:不要命名工厂方法getInstance 或类似名称。将其命名为类型名称,因此静态导入时该方法看起来很好(并且不会与其他名称相反的工厂方法创建名称冲突)。

答案 1 :(得分:0)

我认为如果您现有的工厂正在为相关对象提供服务,那么您可能想要创建另一个工厂。即使你的工厂只创造一种类型的物体,我认为它很好。