0

我有两个类扩展了第三个类,即

public class class_a extends parent_class

public class class_b extends parent_class

我的问题是可以让第三类根据条件创建对类的引用吗?IE

public void test() {
  parent_class b;
  if (cond)
    b = new class_a();
  else
    b = new class_b();
}

有没有办法做到这一点?

我不想为每种类型的类创建变量,我只会在这个函数的整个生命周期中使用一个。

4

2 回答 2

3

这正是工厂设计模式的用途。

http://en.wikipedia.org/wiki/Factory_method_pattern

这也可能是使用工厂模式。什么时候使用工厂方法?

于 2013-07-04T10:57:36.033 回答
0

是的。 多态性允许您将威胁子类作为基类。因此,您可以编写具有 parent_class 返回值类型的方法,如下所示:

parent_class create(boolean condition)
{
   return condition ? new class_a() : new class_b();      
}

正如@John 回答的那样,它被称为工厂方法。

PS 在 Java 中,您最好使用CamelCase命名类,例如 ClassA 和 ParentClass。代码风格。

于 2013-07-04T11:05:42.193 回答