【问题标题】:Creating a list out of my DTO从我的 DTO 创建一个列表
【发布时间】:2011-12-28 07:41:29
【问题描述】:

我有一个年份对象。现在让我们说只有两年及其获取者和设置者

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;   }

那么每年有三个保险计划。以及它的 getter 和 setter。

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 分别乘以 3 = 30 个计划及其 getter 和 setter。

这是怎么做到的?

【问题讨论】:

    标签: java list object dto getter-setter


    【解决方案1】:

    我认为您最好的选择是保持保险计划的年数和数组列表。这样,您可以获得一次数组列表,并获得您实际想要的任何一年的保险计划详细信息。这将以一个单一的保险计划数组列表和一个多年的单一数组列表为特征。

    私有 ArrayList mYear; 私有 ArrayList 健康计划; 私有ArrayList carPlan; 私有ArrayList housePlan; 公共字符串 getHousePlanForYear(字符串年份){ 返回 housePlan.get(mYear.indexOf(year)); } 公共无效 setHousePlanForYear(字符串 housePlan,字符串年份){ this.housePlan.set(mYear.indexOf(year), housePlan); }

    其他计划也是如此。当然,所有这些都是假设年份始终存在以及其他边界条件。只需在这些 getter 和 setter 中添加边界检查,就可以了。 :)

    【讨论】:

    • 在您的示例中,void 方法如何具有返回类型?
    • 呵呵..对不起..这是我忽略的一个错误..感谢您提出!
    【解决方案2】:

    我在这里看到了设计/领域建模问题。理想情况下,一个人可以有多个“计划”和附加到每个计划的“附加条件”。这应该通过创建一个“PlanCollection”类或简单地维护一个“计划”列表来正确地抽象出来,这些“计划”都扩展/实现了一个通用的“计划”类/接口。

    每个计划都可以有一个“计划”持续时间和开始日期。此外,从逻辑上讲,您不会将计划附加到“年份”,而是将时间线信息封装在计划本身中(如上面提到的开始和持续时间)。

    【讨论】:

      【解决方案3】:

      看看枚举和映射。枚举将指定汽车、房屋等。

      您可以创建一个以枚举为键、以年份列表为键的地图。不要试图创建 YearThree 等。

      注意风格:如果您打算使用 m 为字段添加前缀,请取出 setter 的 m out。例如。 setYearOne 不是 setmYearOne。

      明智地选择你的类型,如果 int 更好,不要使用 String。

      【讨论】:

        猜你喜欢
        • 2021-01-14
        • 2014-06-29
        • 2015-12-17
        • 1970-01-01
        • 1970-01-01
        • 2012-10-15
        • 2017-01-29
        • 1970-01-01
        • 2019-03-15
        相关资源
        最近更新 更多