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

}

または代わりに 2 番目の方法 (セッターなし):

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

カヤマン は、10 個のパラメーターがあると仮定します。同じように updateRenterGrouping(parameters...) メソッドを呼び出すだけで、代わりにエンティティに 10 個のセッターを作成し、これらの属性に値を入力するすべての場所でさらに悪いことになります。別の可能性は次のとおりです。代わりに、すべての属性に対して entity.setAtribute(x) を作成します。それを行うメソッドがあります。

それは価値がないですか?

于 2013-10-29T11:33:13.743 に答える