JavaのDDDは、通常、ドメインの一部であるすべてのプリミティブを値オブジェクトに変換することを意味しますか?私は今日、同僚とのStringly(厳密には強力な)型付きコードに関する同僚との議論を行ってきました。私は、物事を分離するバリューオブジェクト(まあ、エンティティではないもの)にすべてを変えるというのが大好きですが、構造体(住所、通り、家の番号など)の場合には、 、など)、または組み込み検証が関連する場合(電話番号のような場合)。たとえば、ペットの名前を別のラッパークラスに入れるなど、残念ながら(ロンボクのようなフレームワークであっても)、それとも一見すると簡単に見つけられない大きな利点がありますか?Javaのドメイン駆動設計 - すべてのプリミティブをバリューオブジェクトに変換する
答えて
これはルールではありませんが、コードにはビジネス言語ができるだけ反映されている必要があります。理解できるビジネス名詞にプリミティブ値を変更することをお勧めします。値オブジェクトが非常に単純な場合でも(単一のvalue
プロパティを持つ)、明示的に名前を付けると、それらのオブジェクトを推論するのがはるかに簡単です。それに加えて、あなたのオブジェクトは、あなたのモデル/ドメインのナレッジ・クランチングの間に変わる可能性があります。ある日、あなたの単一価値オブジェクトは複雑な検証を伴うより複雑な構造に変わることは非常に可能です。値オブジェクトを意味のあるクラスとして最初から設計すると、リファクタリングがはるかに簡単になります。静的型検証の利点も得られます。ストリートアドレスとしてペットの名前を設定することはできません(単純な文字列としてモデル化した場合のみ可能です)。
これは、一目で発見するのは容易ではない大きな利点をもたらしますか?
大きな利点の1つは、ビジネスロジックをメモリ内のデータの表現から切り離すことです。たとえば、お金を整数、ロング、固定小数点、または浮動小数点として表現しているかどうかは、請求処理ロジックではまったく気になりません。購入価格に税率を適用するようなことが気になります。
したがって、値の種類は単なる「タグ」以上のものであり、ユニットや丸めルールなどを入れたり、税金や税金などの重要な区別を追跡するのに便利です。
また、さまざまな概念を明らかにして明確にすることもできます。Address
は出荷ラベルに記載されていますか?地図上の場所?不動産のタイトル?税管轄の一部ですか?法的管轄の一部ですか?
強力な型の安全性を組み合わせると、コーディングエラーによってビジネスエラーが発生していないことを確認できます(前と後の税額を合計するなど)。
- 1. ドメイン駆動設計。エンティティタイプの設計
- 2. ドメイン駆動設計とAutomapper
- 3. ドメイン駆動型設計のエンティティ
- 4. ドメイン駆動設計:インフラストラクチャの懸念またはドメインの懸念?
- 5. IoCコンテナとドメイン駆動設計
- 6. symfonyとドメイン駆動型設計
- 7. 目的Cドメイン駆動型設計
- 8. ドメイン駆動型設計の原則に適用するベストプラクティス?
- 9. ドメイン駆動型設計におけるルートアグリゲートの問題
- 10. ドメイン駆動型設計でJavaで認証と認証を実装する
- 11. 春データ休みドメイン駆動設計 - 非集計ルートエンティティの投稿
- 12. Doctrineをドメイン駆動設計で使用する
- 13. ドメイン駆動設計:ワークフローロジックはどこにありますか?
- 14. ドメイン駆動型設計におけるリポジトリと集約ルート
- 15. バイリンガルUbiquitious言語ドメイン駆動設計とプロジェクト内の
- 16. ドメイン駆動設計:集約ルートごとのリポジトリ?
- 17. マイクロサービス依存管理 - ガバナンスまたはドメイン駆動型設計?
- 18. ORMを使用したドメイン駆動設計
- 19. 検証レベル駆動設計
- 20. ドメイン駆動型設計における集約ルートの複雑さ
- 21. イベント駆動型設計ツール
- 22. ドメイン駆動型設計では、工場クラスでインフラストラクチャにアクセスできますか?
- 23. ドメイン駆動型設計の各ルート集約エンティティ用の1つのリポジトリ
- 24. ドメイン駆動のプログラミングとイベント
- 25. ドメイン駆動設計でエンティティを記述するときに連続性のスレッドが意味するもの
- 26. ドメイン駆動型デザインのレイヤー
- 27. ドメイン駆動型設計を実装する際に、工場で他の集約を参照できますか?
- 28. ドメイン駆動型設計でサービスをどのように実装する必要がありますか?
- 29. エンティティがコンテナにコンテナを追加するエンティティを複製するとき、ドメイン駆動型設計では?
- 30. 座標の間のすべての距離を合計するMySQL - キロバイト駆動
参照http://stackoverflow.com/questions/43162937/ddd-value-objects-to-cover-every-property –