web-dev-qa-db-ja.com

Javaクラス設計

Json応答を送信する必要があります。私はjacksonライブラリを使用してクラスをjsonに変換します。コアJavaクラスがあり、json応答を作成するためにさらにフィールドを追加する必要があります。2つのアイデアがありました。

  1. コアを拡張するにはJavaクラス。
  2. コアクラスオブジェクトをコンストラクターとして持つ別のクラスを持つこと。

2つの方法に関する懸念は次のとおりです。

  1. データベースからコアJavaオブジェクトを返すコアレイヤーがあります。拡張クラスオブジェクトを返すメソッドを呼び出す必要があります。コアレイヤーでは、拡張クラスのインスタンスを作成して、
  2. これでjson応答を簡単に実現できますが、すべてのオブジェクトに対して、ラッパーのようなオブジェクトが作成されます。

このためのデザインパターンを教えてください

1
ksv

私はこの問題によく苦労していました。しかし幸いなことに、それは明確に定義された答えを持っています:あなたの2番目のオプションで行き、そしてただ先に進んで別のクラスを作ってください。

あなたは自分自身を繰り返すことを恐れているので、これはあまり明白ではないようです。ただし、別のDTOを持つことはnotコードを繰り返すことです。これは、これら2つのクラスの目的が完全に異なり、異なるドメインを占有しているためです。それらは類似しているように見えるかもしれませんが、これらの類似性は偶然であり、因果関係ではありません。

JSONを使用するクライアントが、フィールドが大きすぎるためにパフォーマンスを節約するためにフィールドの1つを削除する必要がある場合はどうなりますか?そのフィールドをコアオブジェクトから削除することはできないため、継承オプションを使用した場合は非常に難しい状況になります。

必要な場所にクラスを追加することを恐れないでください。最終的には物事が簡単になり、実際にコードの総量が削減されます。

3
TheCatWhisperer