2011-12-28 65 views
0

我有一個年份對象。現在讓我們說只有兩年,其獲得者和制定者從我的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; } 

然後,每年有三個保險計劃。它的獲得者和制定者。

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年,我將分別乘以3 = 30計劃和其獲得者和設定者10乘以 。

這怎麼辦?

回答

1

我認爲你最好的選擇是保持保險計劃的年數和數組列表。通過這種方式,您可以獲得一次數據列表,並獲取您實際想要的年份的保險計劃詳情。這將以一個單一的保險計劃arraylist和一個arraylist多年爲特徵。

 
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方法如何返回類型? – 2011-12-28 08:54:22

+0

hehe ..對不起..這是我忽略的一個錯誤..感謝您提出! – Neo 2011-12-28 16:10:15

1

我在這裏看到一個設計/領域建模問題。理想情況下,一個人可以在每個計劃中附加多個「計劃」和「乘客」。通過創建一個「PlanCollection」類或者簡單地維護一個所有擴展/實現一個共同的「Plan」類/接口的「計劃」列表,這顯然應該被正確地抽象出來。

每個計劃可以有一個「計劃」持續時間和開始日期。此外,從邏輯上講,您不會將計劃附加到「年」,但時間線信息將封裝在計劃本身中(如上面提到的開始時間和持續時間)。

1

看看枚舉和地圖。枚舉會指定汽車,房子等

您可以創建一個映射,它接受一個枚舉的關鍵和多年的密鑰列表。不要試圖創建YearThree等。

在樣式說明上:如果您打算使用m作爲字段的前綴,請使用setter的m out。例如。 setYearOne不是setmYearOne。

明智地選擇你的類型,如果int更好,不要使用String。