More Related Content
Similar to ドメイン駆動設計とは何か 【入門編】
Similar to ドメイン駆動設計とは何か 【入門編】 (20)
ドメイン駆動設計とは何か 【入門編】
- 15. 第1部 要約
• 第1章 知識をかみ砕く
– ドメインを継続的に学習する
– ドメイン知識が豊富な設計
– ドメインを深く理解する
• 第2章 コミュニケーションと言語
– 言葉による意見交換/意識合わせ
– 声に出してモデリング
– 略式のUML図による議論の基盤/手がかり
• 第3章 モデルと実装を結びつける
– モデルと実装を一致させる
– そのための技法:オブジェクト指向
– モデリングと実装をシームレスな活動にする
- 19. モデル
• 選び抜いた重要な側面
• 蒸留された本質的な知識
• 全体を形づくる主要な骨
組み
実装
• 大量かつ網羅的な記述が
• 重要ではないが、省略は
できない細部の記述
• 肥大化したコード、重複し
たコードとの戦い
モデルと実装を関連づけることで、実装が整理され、見通しが良くなる
実装からフィードバックすることで、モデルが実用的になる
19
- 29. モデルと実装の一致を難しくする問題
• オブジェクトの永続化
– 可能であれば、ドメインオブジェジェクトは、メモリ上に永遠に存在していてほしい
– それができない場合、どうするか?
– 関心事と永続化の実装を分離する
• Repository をインタフェースで宣言
• ドメインオブジェクトとテーブルのマッピングの外部化
• テーブル設計とオブジェクト設計の分離
• オブジェクトのネットワークの複雑化
– オブジェクトの参照関係の広がり/要点がぼやけてくる
– どこかで断ち切る
– 整合性とそれを維持するロジックに注目する( Aggregate 集約の設計)
– 参照関係の復元は、サービス層で行う
• (エヴァンス本には書いていないが)
– 画面の複雑さがドメインオブジェクトの集約(Aggregate)に持ち込まれがち
– Aggregteをデータのコンテナにしないことが基本
入門編としては、難易度が高いが、必ずぶつかる問題 …
ここでモデル駆動設計がだいなしになっている場合が多い…
- 33. ブレークスルーの助走
• 違和感への気づき
– 理解がずれている感
– コードのごちゃごちゃ感
– 忘れないようにする
• リファクタリングの基本の繰り返し
– 長いメソッドからメソッドを抽出
– 大きなクラスからクラスを抽出
– その時の抽出単位と名前付け(暗黙から明示へ)
– 値オブジェクト、コレクションオブジェクト、区分オブ
ジェクトによる整理