簡體   English   中英

Java中對象的封裝

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM