purucat’s blog

寿司よ止まれっ!

"「実践ドメイン駆動設計」から学ぶDDDの実装入門" 7 章感想 (全14章)

"「実践ドメイン駆動設計」から学ぶDDDの実装入門"

「実践ドメイン駆動設計」から学ぶDDDの実装入門 (CodeZine Digital First)

「実践ドメイン駆動設計」から学ぶDDDの実装入門 (CodeZine Digital First)

のレビューをこまめに記載していく


ドメインサービス」〜複数のものを扱うビジネスルール〜

メモ

  • DDDにおけるサービスには「アプリケーションサービス」と「ドメインサービス」の2つがある。
    • ドメインサービス::=個々のドメインオブジェクト(エンティティ、値オブジェクト、集約)の責務だけでは表現できないビジネスロジックを実装。(ドメイン層)
      • SRP(Single Responsibility Principle単一責任の原則)::=クラスを変更する理由は一つ以上存在してなならないこと。
    • アプリケーションサービス::=ドメイン以外の関心の実装をする。(ドメイン層へのクライアント側?)
  • セパレートインターフェイス::=実装クラスとは別のパッケージ(クラスではない!!)でインタフェースを定義すること。これはDIPの依存関係を表現していると思う。
    • 書籍には複数実装がなく今後実装を差し替える可能性がないなら不要とあるが DIPの実現はできない気がする、、、

Correct Diagram.

<domain package> AuthenticationService -> IEncryptionService
------------------------------------------------↑--------
                                                |
<infra package>                           MD5EncryptionService

Incorrect Diagram.(よくやりがち?)

<domain package> AuthenticationService
                     |
----------------------↓---------------------------------
<infra package>  IEncryptionService   <-   MD5EncryptionService