DomainDrivenDesignで学んだこと

この本のメインは後半の「モデルが巨大になったときどうするか」というところなのでしょうが、自分にとっては前半の話が役に立ちました。(確か熟練者は前半は飛ばしてOK、みたいな記述があったような...orz)

Repositoryの項

オブジェクトが他のオブジェクトと関連するためには、

  • 自分で他のオブジェクトを作る
  • リポジトリから取得してくる

という2つの方法があるよね、という話が出てきます。
普通はこの2つだけどDIコンテナを使うと

という別の方法が使えるよ、という話をDIコンテナを説明する時にしています。

Aggregationの項

モデルの中のオブジェクトをいくつかキュルキュルと線で囲って、大きな単位でのオブジェクトとして扱う話です。DDDではモデルの構成要素をEntity,ValueObject,Repositoryの3種としているので、だいたい1つのEntityの周りにValueObjectやRepositoryが付いているような感じになります。
これに影響を受けて自分でもモデルを線で囲ってます。
複数のオブジェクトを大きな単位での1オブジェクトとして扱う、という意識があると、クラス分割しても大きな単位のオブジェクトとして見れば凝集性は保ってる、と自信が持てるので。