第2章:ドメインロジックの構築:エンタープライズアプリケーションアーキテクチャパターン(PoEAA)、メモ
序論
ドメインロジックの構築について、以下の3つの主要パターンに分割している。
トランザクションスクリプト:手続き型モデルである。ドメインロジックが複雑になると、いくつかのトランザクションが同じ動作を行う必要があり、コードが重複する事が多い。明確な構造を持たないルーチンの絡まり合いのようなアプリケーションができあがってしまう。
ドメインモデル:ドメイン名の名詞について体系化したモデルを構築。ドメインモデルが持つ価値は、ロジックに複雑になったとしても十分に体系化された方法で対処できる多くの技法があること。
テーブルモジュール:トランザクションスクリプトとドメインモデルの中間。
トランザクションスクリプトとドメインモデルの違いを見つけるための容易な方法は、それぞれのパターンに従ったシーケンス図を書いてみる事である。
2.1 選択
図2.4 ドメインロジックの各形式の複雑性と労力の関係、より、
ドメインモデルは、シンプルなドメインロジックに対して使用するには、機能追加の労力が大きくなるので、魅力的でない
しかし、他の手法はドメインロジックが複雑となると機能追加するのが、指数的に難しくなるという難点がある
これら3つのパターンは相互に排他的な選択肢ではない
相互に排他的な選択肢ではなく、ドメインロジックの一部にトランザクションスクリプトを使用することなどはある。
2.2 サービスレイヤ
ドメインロジックを扱うときの共通の手法は、ドメインレイヤを2つに分割すること。
サービスレイヤは、ドメインモデルまたはテーブルモジュールの上に配置する。また、ドメインモデルかテーブルモジュールとともに使用する
サービスレイヤでは、どの程度の振る舞いをそこに加えるかを決めることが重要。
最小限にする場合は、サービスレイヤをファサード(外観)にする。これにより、実際の振る舞いはすべて下位のオブジェクトになる。
多くのビジネスロジックはサービスレイヤ内のトランザクションスクリプトに置かれる。
下位のドメインオブジェクトがドメインモデルであれば、データベースと一対一の関係になり、アクティブレコードなどのシンプルなデータソースレイヤを使用可能。