[英]encapsulation of objects in java
大家下午好。
我在考慮Java中的一些問題。 到目前為止,我工作過的所有公司都從來沒有打擾過優秀的封裝代碼。 因為這個,我在自己的腦海中提出了這個問題。
解決舊的使對象對象物化的問題的更好,更微妙的方法是什么。
使用getter和setter創建陽極實體(無需驗證),或將相同的對象作為參數傳遞,並將參數的新值傳遞給它。
例如:
貧血實體:
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;
}
}
或改為第二種方式(不使用setter):
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方法嗎?
等待你們的反饋。 感謝大伙們!
查看調用實體的方法:
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),我們有為我們做的方法。
不值得嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.