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