ここではJavaのデザインに関する質問はほとんどありません(JEE Webアプリケーションのコンテキストに関係します)。java継承とジェネリックス
たとえば、同じリソースにGET
とPOST
の2つの操作を持つREST APIがあるとします。そこから、Jacksonの2つのクラスがリクエストの入力フィールドを表すように構築されます。これらのクラスは、リクエストのパラメータが多少異なるために異なります。
これらの2つのクラスには、のフィールドのセットが含まれています。各クラスに属するフィールドのセット。例えば:
public class GetRequest {
// common fields
private String callerId;
private String userId;
// non-common fields
private boolean withLinkedServices;
// Constructors, egals, hasCode, toString, getters,setter etc...
}
そして、私のアプリケーションのビジネス層にはクラスのPostRequest
public class PostRequest {
// common fields
private String callerId;
private String userId;
// non-common fields
private List<ServicesBean> services;
// Constructors, egals, hasCode, toString, getters,setter etc...
}
、私が使用して別のBeanを記入します(各REST操作用)ヘルパー方法をコーディングする必要が各オブジェクトの共通フィールド。このメソッドの実装は、GET操作とPOST操作ではまったく同じです。
唯一の違いは、GET
操作の場合、私はGetRequest
クラスを渡さなければならず、POSTのためにはPostRequest
を渡さなければならないということです。
だから私の質問は次のとおりです。
私はデータモデルと使用相続に取り組むべきか、私は私のヘルパーメソッドにジェネリックを使用する必要がありますか?アプリケーションの将来の進化にどのような意味があり、より効率的で弾力性がありますか?(例えば、そのリソースに多くの操作が追加された場合)
私のメソッドのシグネチャは(POSTのヘルパーのため)である:
public IDaoRequestBean buildDaoRequest(final PostRequest request);
とgetのヘルパーのために:
public IDaoRequestBean buildDaoRequest(final GetRequest request);
リード[本](http://stackoverflow.com/questions/2642598/generics-vs-inheritance-when-no-collection-classes-are-involved) –