目標
・ふわっとした理解のDDDについてエヴァンス本を通して体系的に学習する
・各章の要約をアウトプットすることで知識を定着させる
前回の記事
第11章の内容は以下でまとめています。
(※現在工事中)
【第12章】デザインパターンをモデルに関係づける
ドメイン駆動設計でデザインパターンを利用するためには以下2点のレベルで考える必要がある。
・コードで用いられる技術的なデザインパターン
・モデルで用いられる概念的なパターン
ストラテジー
アルゴリズムをカプセル化し、さらにそのファミリーを定義することで、それぞれのアルゴリズムを交換可能にする。
・プロセスの中で変化する部分を、独立したストラテジーオブジェクトとして定義する。
・ルールと振る舞いを切り離す。
・ルールや置き換え可能なプロセスはストラテジーパターンにしたがって定義する。
コンポジット
オブジェクトを組み立てて、部分と全体の階層を表すツリー構造を作ること。
・コンポジットを構成するすべてのメンバを含む抽象型を定義する。(abstractクラス)
・情報を戻すメソッドはコンテナに実装され(Override)、内容についての集約された情報を戻す。
・リーフノードはそれぞれ独自の値に基づいてメソッドを定義する。
・クライアントは抽象型クラスを扱い、それ以下のコンテナやリーフを区別しない。
まとめ
ドメイン駆動設計で用いられるデザインパターンについて学ぶことができた。
本書では紹介されなかった他のデザインパターン(GoFなど。。。)も今後学んでいきたい。
次は「より深い洞察へ向かうリファクタリング」を学んでいく。
次の13章で第3部はラストなので気合を入れていこう。
参考になったらいいねやコメントおまちしています!!