読書記録 ドメイン駆動設計入門
0. この投稿の概要
1. 知識を表現するパターン
値オブジェクト
- システム固有の値を表したオブジェクトであり「値」がもつ3つの性質を持つ。その性質は不変である、交換が可能である、等価性によって比較されること。
- どの値を値オブジェクトとして実装するかの判断基準は「ルールが存在しているか」(ルールをオブジェクトが担保するため)と「それ単体で取り扱いたいか」。
- 値オブジェクトのメリットはその値に関するルールの実装を集約できること。プリミティブ型を使う場合、その値を利用する場所全てでルールチェックをする必要がある。
エンティティ
2. アプリケーションを表現するためのパターン
アプリケーションサービス
ファクトリ
- 複雑なオブジェクトの生成を処理するオブジェクト。「コンストラクタ内で他のオブジェクトを生成するかどうか」はファクトリを作る際の動機づけになる。
3. 知識を表現する、より発展的なパターン
集約
4. その他
依存関係逆転の原則
- データストアの操作などハードに近い処理を行うオブジェクトは下位レベルで、クライアントに近い処理は上位レベル。上位が下位に依存してはならず、抽象オブジェクトを作成し、どちらのオブジェクトも抽象に依存するようにする。
ユビキタス言語
- プロジェクトにおける共通言語(語彙)、最終成果物であるコードでもこの表現が現れるべき。
5. 感想
- ドメイン駆動設計というと謎の用語が大量にあってハードルが高く感じるが、本書を読むとそこまで身構える必要がないような気分になる。ちゃんと理解するには原典を読むべきなんだろうが、その下準備として読んで損はない一冊だと思う。