2011-12-28 7 views
0

私は年オブジェクトを持っています。今のところ2年とそのゲッターとセッターだけを言うことができます私のDTOのリストを作成する

private String mYearOne; 
private String mYearTwo; 
public String getmYearOne() { 
    return mYearOne; } 
public void setmYearOne(String mYearOne) { 
    this.mYearOne = mYearOne; } 
public String getmYearTwo() { 
    return mYearTwo; } 
public void setmYearTwo(String mYearTwo) { 
    this.mYearTwo = mYearTwo; } 

そして、毎年3つの保険プランがあります。そしてそのゲッターとセッター。

private String healthPlan; 
private String carPlan; 
private String housePlan; 
private String healthPlanTwo; 
private String carPlanTwo; 
private String housePlanTwo; 
public String getHealthPlan() { 
    return healthPlan; } 
public void setHealthPlan(String healthPlan) { 
    this.healthPlan = healthPlan; } 
public String getCarPlan() { 
    return carPlan; } 
public void setCarPlan(String carPlan) { 
    this.carPlan = carPlan; } 
public String getHousePlan() { 
    return housePlan; } 
public void setHousePlan(String housePlan) { 
    this.housePlan = housePlan; } 
public String getHealthPlan() { //For the second year 
    return healthPlan; } 
public void setHealthPlan(String healthPlan) { 
    this.healthPlan = healthPlan; } 
public String getCarPlan() { 
    return carPlan; } 
public void setCarPlan(String carPlan) { 
    this.carPlan = carPlan; } 
public String getHousePlan() { 
    return housePlan; } 
public void setHousePlan(String housePlan) { 
    this.housePlan = housePlan; } 
public String getHealthPlanTwo() { 
    return healthPlanTwo; } 
public void setHealthPlanTwo(String healthPlanTwo) { 
    this.healthPlanTwo = healthPlanTwo; } 
public String getCarPlanTwo() { 
    return carPlanTwo; } 
public void setCarPlanTwo(String carPlanTwo) { 
    this.carPlanTwo = carPlanTwo; } 
public String getHousePlanTwo() { 
    return housePlanTwo; } 
public void setHousePlanTwo(String housePlanTwo) { 
    this.housePlanTwo = housePlanTwo; } 

コードが大型であることがわかります。私は年の<list>でそれらを定義する必要があります。だから10年を考えると、私は10 = 30プランとそのゲッターとセッターでそれぞれ を掛け合わせるでしょう。

どうすればいいですか?

答えて

1

私はあなたの最善の策は、保険プランの年数とアーラリストの数を維持することになると思います。こうすることで、arraylistを一度入手して、実際に何年でも保険プランの詳細を取得することができます。これは、1年の間、単一の保険プランアーリーリストと単一のアーリーリストによって特徴付けられます。

 
private ArrayList mYear; 
private ArrayList healthPlan; 
private ArrayList carPlan; 
private ArrayList housePlan; 

public String getHousePlanForYear(String year){ 
return housePlan.get(mYear.indexOf(year)); 
} 

public void setHousePlanForYear(String housePlan, String year){ 
this.housePlan.set(mYear.indexOf(year), housePlan); 
} 

他のプランと同様です。もちろん、これはすべて、年が常に存在し、他の境界条件であると仮定しています。これらのゲッターとセッターに境界チェックを追加すれば、あなたはうまくいくでしょう。 :)

+0

あなたの例では、voidメソッドはどのように戻り値の型を持つことができますか? –

+0

hehe ..すみません..それは私が見落とした間違いでした..持ち上げてくれてありがとう! – Neo

1

ここでは、デザイン/ドメインモデリングの問題があります。人は理想的には、それぞれの計画に複数の「計画」と「ライダー」を付けることができます。これは、 "PlanCollection"クラスを作成するか、または共通の "Plan"クラス/インタフェースをすべて拡張/実装する "Plan"のリストを維持するだけで、適切に抽象化する必要があります。

各プランは、「計画」期間と開始日を持つことができます。また、論理的には、「年」の計画は添付しませんが、タイムライン情報はプラン自体にカプセル化されています(前述の開始時間と継続時間など)。

1

enumsとマップを見てください。 enumは自動車、家などを指定します。

enumをキーに、年のリストをキーとして使用するマップを作成できます。

スタイルのメモ:フィールドをプレフィックスとしてmを使用する場合は、m をセッターのから取り出してください。例えば。 setYearOneはsetmYearOneではありません。

あなたのタイプを賢明に選択してください。intが良い場合はStringを使用しないでください。

関連する問題