Domain Driven Design - ドメインオブジェクトのライフサイクル

内容が専門的過ぎて段々辛くなってきた。第二章まで読んだら実践に移ろう。 まずはこういうデザインパターン本をひとつ手にとれただけで意味深い。 とりあえず、ruby on railsとかexpressをもう一回さわるかなあ。

コンストラクタ

一般的に、コンストラクタは必要に応じて生成されて死ぬ。

コンストラクタ(構築子[1]、英: constructor)は、オブジェクト指向のプログラミング言語で新たなオブジェクトを生成する際に呼び出されて内容の初期化などを行なう関数あるいはメソッドのことである。対義語はデストラクタ。

それよりも長くて、他オブジェクトと相互依存関係があるようなオブジェクトは混乱をもたらす。 それらに対し、集約、ファクトリ、リポジトリという方法で対抗する。

集約

集約とは各定義のアクセスポイント。

各集約に対してルートとなるエンティティを一つ選んで、境界の内部にアクセスするときはそれを介すること

これにより、RDB等を使った場合にもデッドロックを防ぐことができる様になる。

ファクトリ

オブジェクトや集合全体が複雑になっていたり、内部構造をさらけ出し過ぎたりした場合、ファクトリによってカプセル化が実現される。

ファクトリかコンストラクタかの判断は、基本的には構築の単純さで判断する。

リポジトリ

ドメイン駆動設計の目標は、技術ではなくドメインについてのモデルに終点をあわせることによって、よりよいソフトウェアを作ることである。 SQL操作をしているという意識なく、オブジェクトを取得できるようにすることでドメイン駆動を保つ。