在java中封装对象

时间:2013-10-28 20:28:42

标签: java methods entity encapsulation

大家下午好。

我在想Java中的一些问题。我工作到现在的所有公司从来都没有用一个好的封装代码来打扰自己。因为我在自己的头脑中提出了这个问题。

解决某些对象的旧问题的更好和微妙的方法是什么。

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

例如:

anemics entities:

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

感兴趣

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

1 个答案:

答案 0 :(得分: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个setter,而在我们想要在这些属性中输入值的每个地方都更糟糕。 另一个可能性是:相反,在任何地方为每个属性创建entity.setAtribute(x),我们有为我们做的方法。

不值得吗?