不同层之间的对象关系

我是一个java新手,最近用struts框架做一个行政审批的系统,在编码过程中,有很多疑惑,希望大家解答。
比如在持久层,有domain model和数据库的表对应,由DAO操作;在表现层,往往domain model并不够用,我是不是应该扩展domain model,建立新的view model,但往往对一个domain model会有很多的view model,这样会不会造成代码的混乱?
不知道我的表述是不是清楚,还望大家指教

>往对一个domain model会有很多的view model,这样会不会造成代码的混乱
你这个问题非常典型,解决这个问题从两个方面下手:
1.了解Domain Model是如何产生的?它是从分析阶段产生的,它应该反映系统的原型。

2.如果发生矛盾,可能是Model提炼不够全面或细节。

3.界面可能由多个Model组合而成,但是一个表单绝对对应一个Modle

>3.界面可能由多个Model组合而成,但是一个表单绝对对应一个Modle
谢谢banq的回答,不过对于您的第三条我不太理解,为什么一个表单绝对对应一个Model,比如在ActionForm里可能存在多个bean的List,这里的Model是个什么概念呢?

我这里指的表单不是用来显示的表达,而是用来提交的表单。一个html Form表单对应一个ActionForm,而一个ActionForm我一般对应一个Model。

显示表单时可灵活处理,例如使用Action--Jsp的串联等。

具体可能难以说清楚。

我已经在《模型驱动软件开发》一文中,画出Model高于表现层和持久层的图如下:

谢谢banq兄,我又重新抽象了view model,问题基本解决了。正在拜读banq兄的文章

>3.界面可能由多个Model组合而成,但是一个表单绝对对应一个Modle

这个我倒不这么觉得,现在有些系统对于模型的设计已经很复杂,往往Modle不能用一个表单表达,或者一个表单表达的不只一个Modle,比如说,纵向的对象属性扩展,在模型设计时可能有很多不同业务模型,他们底层的数据库实现可能都采用纵向的对象属性扩展,这是在数据库设计时为了通用而采取的一种办法,那么这种设计反映到视图就可能让视图关联到多个Modle

而且视图是灵活的,多变的,客户可能今天喜欢这样的视图流程,明天喜欢那样的流程,一个提交FORM可能一次性把事情做完。所以很难说,当然,大多数情况,确实是可以一一对应,但不绝对

收藏