ひがやすを技術ブログ

電通国際情報サービスのプログラマ

ダイコン時代の設計手法 - UI層のモデル


UI層のモデルはエンティティ(ドメインオブジェクト)ではない。
間違いない

UI層のモデルは画面の入出力のための一時的なデータの入れ物であり、
決してエンティティではないと思います。
これは、画面でしか使わないような一時的な項目もあることから
明らか(言い過ぎか)だと思ってますが、マスターメンテ系のように
UI層のモデルとエンティティがほぼ等しいものもあるので、
悩ましく思うのではないでしょうか。


しかし、UIフレームワークは、それなりに
くせがあり、エンティティをそのまま使おうとすると、
四苦八苦するものです。
UI層のモデルをUIのフレームワークに適したものにすれば、こんな悩みとはおさらばです。あーすっきり。
UI層のモデルとエンティティとの変換はコードで
書いてもたいしたことありませんし、フレームワーク的な物を入れても良いと
思います。


とある本では、StrutsのActionFormがドメインオブジェクトでないことを
批判してますが、間違っているのはきっとその本の著者です。
#監訳者が悪いとは思ってません。一応念のため。(笑)
ActionFormはUI層のモデルであり、
最初からドメインオブジェクトではないためです。


個々の画面に対応するJavaBeansをどこでつくるか?ですが、
UI層のモデル(was JavaBeans)のインスタンスは、
UIフレームワークの方で作成され、StrutsのAction等で、
UI層のモデルとエンティティの変換をおこなうってことで
良いんじゃないかと思ってます。
正解ということではなく、あくまでも私の考えですが。