2011-12-28 98 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。