2017-06-15 5 views
0

クラスフィールドまたは単純フィールドを持つようにpojoを作成するのがよい方法は何ですか? 私はこのようなpojoを作成しています。クラスフィールドまたはシンプルフィールドを持つようにpojoを作成する良い方法は何ですか

public class StatusDTO { 

private String id; 
private int totalNodes; 
private int totalServlets; 
private boolean status; 
public String getId() { 
    return id; 
} 

public void setId(String id) { 
    this.id = id; 
} 


public int getTotalNodes() { 
    return totalNodes; 
} 

public void setTotalNodes(int totalNodes) { 
    this.totalNodes = totalNodes; 
} 

public int getTotalServlets() { 
    return totalServlets; 
} 

public void setTotalServlets(int totalServlets) { 
    this.totalServlets = totalServlets; 
} 

public boolean isStatus() { 
    return status; 
} 

public void setStatus(boolean status) { 
    this.status = status; 
} 

} 誰かが私に

public class StatusDTO { 

private String id; 
private boolean status; 
private Total total; 

public Total getTotal() { 
    return total; 
} 

public void setTotal(Total total) { 
    this.total = total; 
} 
public String getId() { 
    return id; 
} 

public void setId(String id) { 
    this.id = id; 
} 

public boolean isStatus() { 
    return status; 
} 

public void setStatus(boolean status) { 
    this.status = status; 
} 
public static class Total { 
    private int nodes; 
    private int servlets; 
    public int getNodes() { 
     return nodes; 
    } 
    public void setNodes(int nodes) { 
     this.nodes = nodes; 
    } 
    public int getServlets() { 
     return servlets; 
    } 
    public void setServlets(int servlets) { 
     this.servlets = servlets; 
    } 

} 

}

それがどのような違いを生むん以下のように、このようにやってrecommanded?それらの2つの間で良い練習は何ですか? 私はこのクラスを使用してdb情報を設定し、Webソケットクライアント(stomp)に情報を送信します

+1

答えは、あなたのクラスが必要としていると思われるものによって異なる場合があります。どのようなクラスを使用するかについての情報を追加できますか? –

+0

@TimBiegeleisenと同意すると、今ここで詳細が必要ですが、今はまあまあの種類です。最初のケースは「フラット」ですが、* Total *についてのフィールドを変更するたびに* StatusDTOを変更する必要があります(つまり、新しい合計を追加する場合)。* 2番目のケースでは、合計* StatusDTO *に触れることなく拡張することができますが、* NullPointerException *をチェックする必要があります(最初のケースではそうではありません)。 –

+0

クラスが長すぎると分割することをお勧めします。どのように分割すればよいかは、コードのセマンティクスに大きく依存します。結合、結合、単一責任の原則について読むべきです。[抽出クラスのリファクタリング](https://refactoring.com/catalog/extractClass.html) )は意味がある場合の素敵な簡単な例を持っています。 –

答えて

0

答えは、いつものように、次のようなものです。

最初のクラスのような単純なクラスは、それがより簡単で小さくなるという利点があります。 2番目の試みの利点は、もしあなたのクラスが多分後で多分後で拡張されれば、別々のTotalクラスを作る方が簡単かもしれないということです。

良いオブジェクト指向プログラミング、Javaは強くOOであり、ほとんどすべてのものを独自のクラスに入れる必要があります。経験則として

場合、私は別のクラスを作成します。あなたのフィールドにいくつかの機能あなたがそこにある

  • 。あなたは2、互いに関連mabye 3つの分野(例えばconnectionHost、connectionPort)
  • それは私が他の複数のクラス
  • でフィールドを使用することができるだけでモデルクラス(例えば顧客、条)
  • だ、より多くを持っている

もちろん、もっと重要なものがいくつかあります(言及するのを忘れたもう一つの重要なものがあると思うなら、コメントしてください)。

0

いいJavaアプリケーションの重要なことは、例えば空港アプリケーションでは、顧客の最後のフライトでは、ファーストネーム、姓、社会保障番号、婚姻状況、性別、または完全に役に立たない(またはそうでなければならない)顧客に関するその他の情報を取得する際に、お客様の最後のフライトでは、お客様の対象(すべての顧客情報)と別の対象CustomerId(フライトを受けるために必要なビットのみ)が必要です。

もう一つの例はオンラインショップのアプリケーションです。バスケットの総価格を計算するサービスは、バスケット内のすべての記事(写真、説明、仕様など)に関するすべての情報を必要とすべきではなく、他のオブジェクトに囲まれている割引があります。

ここで、Total(問題のない名前が必要な)オブジェクトの懸念事項をStatusDTOオブジェクトの懸念事項とは別に解決できるかどうかを決める必要があります。そのため、メソッドは、関連付けられたStatusDTOオブジェクト。あなたがそれらを別々に取ることができるならば、あなたはそれが不必要でないならば、別々のオブジェクトを持っているべきです。

関連する問題