GWT-RPC、Business、DAOの3つのレイヤーを持つアプリケーションがあります。すべてのレイヤーに異なるBeanがあります。たとえば、ユーザーの場合、UserRPC(UI用)、User(ビジネス用)、UserDTO(永続化用)があります。レイヤーを変更するたびに、オブジェクトを再変換します。
主な問題は列挙です。列挙はレイヤー間でまったく同じですが、レイヤーの独立性を維持するためにそれらを複製する必要があります。
なにか提案を?
GWT-RPC、Business、DAOの3つのレイヤーを持つアプリケーションがあります。すべてのレイヤーに異なるBeanがあります。たとえば、ユーザーの場合、UserRPC(UI用)、User(ビジネス用)、UserDTO(永続化用)があります。レイヤーを変更するたびに、オブジェクトを再変換します。
主な問題は列挙です。列挙はレイヤー間でまったく同じですが、レイヤーの独立性を維持するためにそれらを複製する必要があります。
なにか提案を?
(短い答え)
それらが本当に同じである場合は、commons
プロジェクト/jarを作成します。ここには、ユーティリティクラス、列挙など、アプリケーション全体に共通するすべてのものが含まれています。
(長い答え)
システムの全体的なアーキテクチャを考慮してください。どの層でもデータを複製する必要はありません。これが発生している場合は、システムの設計に欠陥があり、密結合のシナリオが間近に迫っている可能性があることを意味します。これは、ソフトウェアエンジニアを開発するときに、実装を行う前にインターフェイス(コントラクト/ API)を文書化する(すべきである)理由の一部です。これらのインターフェースが承認され、重複の可能性がなくなると、実際の実装を開始できます。これは、アプリケーションの個々の層で作成される定数であるX個の列挙のシナリオをキャッチします。また、列挙型では、ビジネス層の何かが変更されて列挙型に影響を与える場合は、コードを再コンパイルして再デプロイする必要があることに注意してください。
列挙はレイヤー間でまったく同じですが、レイヤーの独立性を維持するためにそれらを複製する必要があります。
データの重複は決して良い考えではありません。1つの列挙への更新が他のレイヤーに反映されていることをどのように確認しますか?おそらく、すべての一般的なクラスをそこに配置するユーティリティレイヤーを作成する必要があります。