ドメイン駆動設計入門 ボトムアップでわかる! ドメイン駆動設計の基本(成瀬允宣)

オススメ度★★

エリック・エヴァンスのドメイン駆動設計を読む前に先に読んだら理解しやすいかなと思って読んでみた。

ドメイン駆動設計の概要は掴めた気がする。ただ、値クラスなど、ここまでする意味あるかな?と感じる部分も多く、「よしこの通り試してみよう」という気にはならなかった。また、駆動するイメージは湧かなかった。

とはいえ、今後設計する時に考え方の幅は広がるような気はするので、実際の問題に取り組みながら、体感を得ていこうと思う。

以下メモ。

  • コードでドメインの知識を表現する
    • ドメインオブジェクト
  • 値オブジェクト
    • 不変
    • 交換可能
    • 等価性で比較可能
  • エンティティ
    • 可変
    • ライフサイクルを持つ
  • ドメインサービス
    • 値オブジェクトやエンティティに定義するには不自然なふるまいを定義する
    • エンティティを重複チェック等
    • イマイチ理解できない
  • リポジトリ
    • 永続化に特化
    • ドメインオブジェクトではない
  • アプリケーションサービス
    • ドメインオブジェクトを使ってユースケースを実現する
  • ファクトリ
    • コンストラクタ内で他のオブジェクトを生成する場合は検討
  • 集約
    • デメテルの法則
    • メソッドを呼び出すオブジェクトは4つ
      • オブジェクト自身
      • インスタンス変数
      • 引数として渡されたオブジェクト
      • 直接インスタンス化したオブジェクト
  • 仕様
    • 複雑な仕様をオブジェクト化したもの
    • 複雑な評価
    • 複雑な検索
  • クリーンアーキテクチャ
    • 密接な関係は同じ層内にまとめ、他の層とはインタフェースでやり取りする
  • ドメインモデリング
    • ドメインエキスパートとの対話が重要
    • 業務システムだと分かるが、パッケージ開発はどうする?

コメントを残す