レベルエンター山本大のブログ

面白いプログラミング教育を若い人たちに

BLOCKVROCKリファレンス目次はこちら

View - Modelにインピーダンスミスマッチがある

ORMの対象領域で有名なインピーダンスミスマッチだけど、
Webアプリケーションの場合、StrutsServletJSPなんかを使うと
ViewとModel層にもインピーダンスミスマッチが発生してしまうのではないだろうか?

O-Rのインピーダンスミスマッチは、モデリングの方法論の違いから生まれている。

O/R モデリング手法
ドメインオブジェクト オブジェクトモデリング
RDB データモデリングおよび正規化

他方で、ViewとModelでもやはりモデリング(と言うより設計)手法が違っているではないか。

V/M 設計手法
フォームデータ 画面設計
ドメインオブジェクト オブジェクトモデリング

ViewからModelを呼び出すときには、リクエストパラメータのデータはモデルに渡してやらにゃいかん。
しかし、さすがにActionFormなどという、Viewテクノロジーに依存しまくったオブジェクトを、そのままModelに渡してしまうことはさけたい。

しかし、ビジネスロジックインターフェイス疎結合にされたModel層には、コンストラクタはない。
また、プロパティーへのアクセッサも面倒なのでつくらない場合が多い。

そこで何が起こるかと言うとDTOへの詰め替えが発生する。

DTOオブジェクト指向を破壊する第一歩だ。
振る舞いとデータの分離を促進するので。

と、そうやってオブジェクト指向開発の土台は崩れていくのだなぁ。

Webアプリやってると、どうもオブジェクト指向にならないのは(他にも原因があるが)
View/Modelインピーダンスミスマッチも原因のひとつだろう。