木曜日, 9月 11, 2008
【Reflex】 トランザクションスクリプトとドメインモデル
Reflexはトランザクションスクリプトモデルである。Entityという形でドメインを定義するがドメインモデルではない。これまでリソース志向ではドメイン設計に重きを置くべきだということを繰り返し説明してきたが、にもかかわらずドメインモデルではないというのはどういうことなのか。
その理由は、リソース実装において必要とされる処理が、Entiryの読み書きとBlogicのステートレスな変換処理だけであって「振る舞い」をもつことがないからである。リソースは「振る舞い」を持たない代わりにマッシュアップがそれを行うことになる。
では、トランザクションスクリプトモデルではドメインの定義が必要ないのかというと、そうではない。
ドメインというのはシステムで使用する項目名の集合である。Reflex設計ではドメインを元にEntityを定義するが、Entityをシステム共通のインターフェースとして使用しているので、シノニムのない見通しのよいシステムを作ることができる。つまり、Reflexでは、HTML生成で使うJSONの項目名やJavaのプロパティ名、またテーブルのカラム名に至るまで同じ名詞となる。これをオブジェクト設計というかどうかは微妙なところだが、「振る舞い」を同時に定義していないので、私は正確にはオブジェクトにはあたらないという立場である。<参考> ただし、オブジェクト指向的な発想で構造化していく作業は必要である。画面のモックアップから具体的にEntityを設計する例をこちらで説明しているが、この例を見てもわかるようにテーブルの構造とイコールとはならず、どちらかというとオブジェクトの構造に近いものになる。
繰り返しになるが、ReflexはEntityという形でドメインを定義するがドメインモデルではない。ドメインモデルは、値と振る舞いを持ったコンポーネントがメッセージを交換し合うようなシステムの設計パターンをいう。
<参考>
DIxAOPコンテナとシステム構築
<関連>
再発見。実はドメインモデルかもしれないReflex
ドメインモデル貧血症、サービスと振る舞いについて
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿