コンストラクターについて疑問があります。
「YOUNG」、「ADULT」、「OLD」と呼ぶことができる 3 つの異なる「ステータス」で作成できるクラス「Foo」があります。
オブジェクトは進化し、「YOUNG」として作成された場合、「ADULT」、「OLD」などになるため、それらを異なるクラスとして見ることはできないことを強調したいと思います..
私の質問は、これら 3 つの類型を多様化するために 1 つ以上のコンストラクターを定義するにはどうすればよいですか??
いくつかの可能性が見えますが、誰も「エレガントな」ソリューションではありません..
1) int を入力としてコンストラクターを作成する
public Foo(int i)
{
switch (i)
{
case 0:
.
.
.
case 1:
.
.
.
case 2:
.
.
.
}
}
しかし、他の人がこのコードを見たかどうかを理解するのはあまり明確ではないので、私はそれが好きではありません.
2)空のコンストラクターを作成し、次のような 3 つの異なるメソッドを作成します。
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)
{
}
static final 変数を使用したことがないため、このコンストラクターをどのように埋めるかわかりません (コンストラクターで使用されていなくても、Calendar などの一部の Java クラスで使用されているのを見たことがあります)。
これらの 3 つのオプションについてコメントして、それらの欠点を強調していただけないでしょうか。