読書ログ:『ドメイン駆動設計入門-11、12章』
このnoteは「ドメイン駆動設計入門」の読書記録です。
11章-アプリケーションを1から組み立てると12章-ドメインのルールを守る「集約」を読みました📚
開発手順
まず最初にどういった機能が求められているか要求を確認。追加する機能が定ったら必要なユースケースを洗い出す。ユースケースが揃ったら必要となる概念とルールからアプリケーションが必要とする知識を選び出し、ドメインオブジェクトを準備。ドメインオブジェクトを用いてユースケースを実現するアプリケーションサービスを実装。
デメテルの法則
オブジェクト同士のメソッド呼び出しに秩序をもたらすガイドライン。
外部から内部のオブジェクトに対して直接操作するのではなく、それを保持するオブジェクトに依頼することで直感的にかつ不変条件を維持することができる。
メソッドを呼び出すオブジェクト
- オブジェクト自身
- インスタンス変数(フィールド)
- 引数として渡されたオブジェクト
- 直接インスタンス化したオブジェクト
内部データの隠蔽
オブジェクトの内部データは無暗やたらに公開すべきものではない。ゲッターを通じて公開されていると本来オブジェクトに記述されるべきルールがいつ何時にどこかで漏れ出すことを防げない。
集約
変更の単位、オブジェクトが持つ不変条件を守る境界。集約の大きさはなるべく小さく保つべき。大きくなるほどトランザクション時のロックの範囲も大きくなる。