木曜日, 9月 11, 2008

【Reflex】 トランザクションスクリプトとドメインモデル このエントリーを含むはてなブックマーク



 Reflexはトランザクションスクリプトモデルである。Entityという形でドメインを定義するがドメインモデルではない。これまでリソース志向ではドメイン設計に重きを置くべきだということを繰り返し説明してきたが、にもかかわらずドメインモデルではないというのはどういうことなのか。

 その理由は、リソース実装において必要とされる処理が、Entiryの読み書きとBlogicのステートレスな変換処理だけであって「振る舞い」をもつことがないからである。リソースは「振る舞い」を持たない代わりにマッシュアップがそれを行うことになる。

 では、トランザクションスクリプトモデルではドメインの定義が必要ないのかというと、そうではない。

 ドメインというのはシステムで使用する項目名の集合である。Reflex設計ではドメインを元にEntityを定義するが、Entityをシステム共通のインターフェースとして使用しているので、シノニムのない見通しのよいシステムを作ることができる。つまり、Reflexでは、HTML生成で使うJSONの項目名やJavaのプロパティ名、またテーブルのカラム名に至るまで同じ名詞となる。これをオブジェクト設計というかどうかは微妙なところだが、「振る舞い」を同時に定義していないので、私は正確にはオブジェクトにはあたらないという立場である。<参考> ただし、オブジェクト指向的な発想で構造化していく作業は必要である。画面のモックアップから具体的にEntityを設計する例をこちらで説明しているが、この例を見てもわかるようにテーブルの構造とイコールとはならず、どちらかというとオブジェクトの構造に近いものになる。
 
 繰り返しになるが、ReflexはEntityという形でドメインを定義するがドメインモデルではない。ドメインモデルは、値と振る舞いを持ったコンポーネントがメッセージを交換し合うようなシステムの設計パターンをいう。

<参考>

DIxAOPコンテナとシステム構築

<関連>

再発見。実はドメインモデルかもしれないReflex
ドメインモデル貧血症、サービスと振る舞いについて

0 件のコメント:

 
© 2006-2015 Virtual Technology
当サイトではGoogle Analyticsを使ってウェブサイトのトラフィック情報を収集しています。詳しくは、プライバシーポリシーを参照してください。