私はクライアントのライブラリを持っており、私の休憩サービスへのHTTPリモート呼び出しを行ってから、List<DataResponse>
を私のライブラリを呼び出す顧客に返しています。サービスには、DataResponse
オブジェクトをラップするものがあれば、エラーとともに表示されます。ここで長いコンストラクタを作成しないようにする方法
public class DataResponse {
private final String response;
private final boolean isLink;
private final TypeOfId idType;
private final long ctime;
private final long lmd;
private final String maskInfo;
// below are for error stuff
private final ErrorCode error;
private final StatusCode status;
// constructors and getters here
}
は私のErrorCode
列挙クラスです:
public enum ErrorCode {
// enum values
private final int code;
private final String status;
private final String description;
// constructors and getters
}
そして、ここでは私のStatusCode
列挙クラスです:
public enum StatusCode {
SUCCESS, FAILURE;
}
あなたは私のDataResponse
クラスで見ることができるように私はフィールドがたくさんあります私は非常に長いコンストラクタを持っていることに基づいて、DataResponse
オブジェクトを作るときはいつも、私はnew DataResponse(.......)
と大きな線を持っています。将来私はもっと多くのフィールドを持っているかもしれませんが、今のところ私はこれらのフィールドしか持っていません。
DataResponse
オブジェクトを作成してから、List<DataResponse>
を自分のライブラリから返すために使う良い方法はありますか?
ビルダーパターンを使用できます。 – YoungHobbit
http://stackoverflow.com/a/6395981/3885376 –
私はビルダーにまだ依存しません。あなたにはたくさんの畑がありますか?分解の仕事のように聞こえる。 [この回答](http://stackoverflow.com/questions/33784390/object-oriented-design-how-important-is-encapsulation-when-therere-lots-of-da/33785266#33785266)を確認してください。後でコンストラクタにあまりにも多くのデータを渡していると感じたら、ビルダーパターンを使用できます。適切な分解は通常、そのトリックを行いますが。多くのパラメータを避けるのではなく、デフォルト値を提供する入れ子構造の構築を避けるために、BUILDERは便利です。 –