アプリケーションで作業しているとき、特に適切なOODパターンとDDDパターンに従うときに、Customer
などのドメインクラスが生成されることがあります。それから、このオブジェクトをロードするいくつかのリポジトリがあり、すべてが素晴らしく清潔です。ドメインオブジェクトのアンダーロードを処理する共通のDDDパターンはありますか?
アプリケーションが複雑になり、パフォーマンスが最適化されます。 Customer
オブジェクトのリストをロードする必要はほとんどありませんが、IDと名前、またはプロパティの小さなサブセット(たとえば、グリッド内に表示するなど)を実際にロードする必要がない状況で自分自身を見つけることがあります。
ソリューションが含まれます:
アンダーロードドメインオブジェクトを、ので、基本的に我々はまだ
Customer
クラスを使用しますが、我々はそれらをロードするために別のリポジトリメソッドを使用して、そのリポジトリメソッドがロードしデータベースからは必須フィールドのみを検索し、オブジェクトの対応するプロパティに値を設定します。残りのCustomer
フィールドはデフォルト値のままです。これは簡単な解決策ですが、開発者(または既存のコード)が特定のプロパティを読み込むことが予想される場合、多くのエラーが発生する可能性があります。私たちは私たちに必要なプロパティのみが含まれ、このようなCustomerIdName
、CustomerInfo
、CustomerHeader
などのクラスを作成目的-クラス分け。このアプローチでは多数のクラスを作成できますが、慎重なサブクラス化は実行可能です。しかし、それはユビキタスドメイン言語のコンセプトから取り除かれているようです。
DDDの世界でそれらを処理するためのいくつかの一般的な合意がありますか?私はこれをgoogleにしようとしましたが、権威あるものを見つけることができませんでした。
これは古典的なDDDアプローチの周知の制限事項に過ぎず、CQRSや他のアプローチがこれらのシナリオでは良いでしょうか?
ありがとう、あなたがリンクしている答えは、私が直面しているのとまったく同じ問題です。これについてもう少し考える必要がありますが、特定のアプリケーションクエリのドメインモデルをバイパスするという概念は非常に興味深い解決策です。 –
参照:[レイジーローディングはデザインの匂いです](https://books.google.com/books?id=9ebGBwAAQBAJ&pg=PA507#v=onepage&q&f=false) – Ritesh