我对构造函数有一些疑问。
有一个类“Foo”可以创建为三种不同的“状态”,我们可以称它们为“年轻”、“成人”和“老”。
我想强调它们不能被视为不同的类,因为对象会进化,如果它被创建为“年轻”,它将变成“成人”,然后是“老”等等。
我的问题是:如何定义一个或多个构造函数来使这三种类型多样化?
我看到了一些可能性,但没有一个是“优雅”的解决方案。
1)创建一个以 int 为输入的构造函数
public Foo(int i)
{
switch (i)
{
case 0:
.
.
.
case 1:
.
.
.
case 2:
.
.
.
}
}
但我不喜欢它,因为如果其他人看到此代码,则不太清楚。
2)创建一个空白构造函数,然后创建三个不同的方法,如
public Foo()
{
}
public void setYoungFoo()
{
.
.
.
}
public void setAdultFoo()
{
.
.
.
}
public void setOldFoo()
{
.
.
.
}
这可能是解决问题的明确方法,但我会在构造函数中解决这个问题..
3)静态变量在这种情况下有用吗?
public static final String "YOUNG";
public static final String "ADULT";
public static final String "OLD";
public Foo(String field)
{
}
我不知道如何填充这个构造函数,因为我从未使用过静态最终变量(我已经看到它们在一些 Java 类中使用,例如 Calendar,即使没有在构造函数中使用)。
您能否评论这三个选项以强调它们的缺点是什么,因为我很确定它们不是一个好的解决方案。