0

大家下午好。

我在考虑Java中的一些问题。到目前为止,我工作的所有公司都从不为优秀的封装代码而烦恼。因为这个我在自己的脑海中提出了这个问题。

有什么更好和更微妙的方法来解决实现某个对象的老问题。

使用 getter 和 setter(无需验证)创建 anemics 实体,或将相同的对象作为参数传递,并在其后传递其属性的新值。

前任:

贫血实体:

public class RenterGrouping implements Serializable {

    private Integer idRenterGrouping;
    private String name;
public RenterGrouping() {
}

public RenterGrouping(String name) {
    this.name = name;
}


@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "idRenterGrouping", unique = true, nullable = false)
public Integer getIdRenterGrouping() {
    return idRenterGrouping;
}


@Column(name = "name")
public String getName() {
    return name;
}


public void setIdRenterGrouping(Integer idRenterGrouping) {
    this.idRenterGrouping = idRenterGrouping;
}


public void setName(String name) {
    this.name = name;
}

}

或者第二种方式(没有设置器):

public class RenterGrouping implements Serializable {

private Integer idRenterGrouping;
private String name;

public RenterGrouping() {
}

public RenterGrouping(String name) {
    this.name = name;
}


public RenterGrouping updateRenterGrouping(RenterGrouping renterGrouping, Integer idRenterGrouping, String name) {
    renterGrouping.idRenterGrouping = idRenterGrouping != null? idRenterGrouping : null;
    renterGrouping.name = name != null? name : null;

    return renterGrouping;

}


@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "idRenterGrouping", unique = true, nullable = false)
public Integer getIdRenterGrouping() {
    return idRenterGrouping;
}


@Column(name = "name")
public String getName() {
    return name;
}

这里的重要事实是保护对象及其属性。

其他人同意updateRenterGrouping方法吗?

等待你们的反馈。感谢你们!

4

1 回答 1

0

查看调用实体的方法:

public RenterGroupingTO saveOrUpdate(Integer idRenterGrouping, String name) throws Throwable {

    RenterGrouping renterGrouping;

    if (idRenterGrouping != null && idRenterGrouping != 0) {
        renterGrouping = getById(idRenterGrouping);
        renterGrouping = renterGrouping.updateRenterGrouping(renterGrouping, idRenterGrouping, name); // calls the method

    } else {

        renterGrouping = new RenterGrouping(name);
    }

    FactoryDAO.getInstance().getRenterGroupingDAO().saveOrUpdate(renterGrouping);
    return new RenterGroupingTO(renterGrouping);
}

它坚持自己做类似的事情:

renterGrouping = getById(idRenterGrouping);
renterGrouping.setIdRenterGrouping(idRenterGrouping);
renterGrouping.setName(name);

Kayaman 假设我们有 10 个参数,同样地,我们只需要调用 updateRenterGrouping(parameters...) 方法,而是在实体中创建 10 个设置器,更糟糕的是,在我们想要在这些属性中输入值的每个地方。另一种可能性是:为任何地方的每个属性创建 entity.setAtribute(x),我们有为我们做这件事的方法。

不值得吗??

于 2013-10-29T11:33:13.743 回答