对于一个小型系统,我使用工厂方法创建相关对象(从父类继承),这样我就可以动态创建对象而无需指定对象的类型。我必须创建另一个没有子类的对象,并且该对象是用户类的实例。要正确理解工厂方法模式,我不必为最后一个类创建工厂方法吗?
答案 0 :(得分:1)
工厂模式不仅仅是关于类型的灵活性。例如,Java已经Integer.valueOf(int)
,尽管它已经有new Integer(int)
。工厂变体允许缓存:Integer.valueOf(1)
的每次调用都将返回相同的实例。这适用于所有不可变对象。
另一个非常重要的考虑因素是对象初始化:有些初始化模式在构造对象时无法完成。例如,调用任何可覆盖的方法。这些案例也通过工厂模式优雅地解决。
我个人会争论第三个好处,但这可能会引起一些争议:我更喜欢编写没有new
的代码。例如,我想写new OidableBinding(vb)
而不是oidableBinding(vb)
。这可以通过静态导入实现。所以请注意:不要命名工厂方法getInstance
或类似名称。将其命名为类型名称,因此静态导入时该方法看起来很好(并且不会与其他名称相反的工厂方法创建名称冲突)。
答案 1 :(得分:0)
我认为如果您现有的工厂正在为相关对象提供服务,那么您可能想要创建另一个工厂。即使你的工厂只创造一种类型的物体,我认为它很好。