特定のプロパティを持つ3つの特定のチケットタイプを必要とするプロジェクトで作業しています。Javaでは、getterとsettersをパラメータ化して使用することができます。つまり、コードを渡して返すクラス変数を決定することができます。
これらのプロパティの中には最終的なものと静的なものがありますが、変更する必要はありませんが、さらにタイプする必要があります。これは、抽象クラスへの変更を意味するが、それを実装するクラスへの変更を意味しない。クラスに書き込む必要のあるロジックを制限するために、これらのクラス変数を含む抽象クラスを作成しました。私はパラメータ(チケット型コード)を受け取ったgetterメソッドを書いてからメソッドがコードを切り替え、適切な値を返します。セッターメソッドでは、コードパラメータを受け取り、受け取ったコードに応じてクラス変数を更新します。
私の質問は以下のとおりです。この悪い習慣1.Is
私は私のクラスの設計を見直す必要がありそうか? 2.もしそうなら、私はコードを再利用可能かつパラメータ駆動型にする方法で、どのように問題にアプローチすべきですか?
以前は、コードファイルを変更する代わりにパラメータファイルを変更できるようにxmlまたはパラメータファイルを作成していましたが、Javaで数年間コーディングしていませんでした。ここで
は、コードスニペットです:。
private static final int iPickThreeLimit = 50;
private static final int iPickFourLimit = 40;
private static final int iPickFiveLimit = 60;
private static int iPickThreeCount = 50;
private static int iPickFourCount = 40;
private static int iPickFiveCount = 60;
protected static void setTicketCount(String sTicketType) {
switch (sTicketType) {
case "PickThree":
AbstractLotteryMachine.iPickThreeCount = iPickThreeCount--;
break;
case "PickFour":
AbstractLotteryMachine.iPickFourCount = iPickFourCount--;
break;
case "PickFive":
AbstractLotteryMachine.iPickFiveCount = iPickFiveCount--;
break;
} //end switch
} // end setTicketCount
protected static int getPickLimit(String sTicketType) {
int iTicketLimit = 0;
switch (sTicketType) {
case "PickThree":
iTicketLimit = iPickThreeLimit;
break;
case "PickFour":
iTicketLimit = iPickFourLimit;
break;
case "PickFive":
iTicketLimit = iPickFiveLimit;
break;
} //end switch
return iTicketLimit;
} //end getPickLimit
私は各チケットタイプに対して個別のgetterメソッドとsetterメソッドを記述する必要がある場合、これは私は、この抽象クラスを実装していたクラスに必要なロジックを風船
なぜ、それぞれのタイプの静的ファクトリメソッドを持つ不変クラスを使用しないのですか? –
このようなスイッチは、ほとんどの場合、悪い考えです。多相性を使用して、それぞれの特定のサブクラスが何が起こるべきかを決めるようにします。したがって、基本クラスで型に基づく切り替えを行う代わりに、メソッドをオーバーライドします。 – GhostCat
@GhostCatこの場合、署名が同一であるため、オーバーライドメソッドは機能しません。 –