|
对于这种情况,利用beanutils的方式需要类型匹配,而userpo与uservo是不匹配的肯定报错,所以这种情况就很烦琐,不知道如何解决,请banq指导!而且对于VO的使用是否是必要的也予以怀疑,直接用PO在层间传递是否可以呢?
|
就说这VO,实则是贫血模型,来自过去数据库时代,表示是数据封装起来的一个对象,他和Evans DDD中值对象是有区别的。
PO更是容易引起歧义。PO和业务对象什么关系呢?
其实了解了Evans DDD以后,PO更象实体 而值对象是从属于实体的,但是传统概念VO和PO是平级的,你还要互相拷贝呢,所以,概念太多不好,统一到DDD的实体和值对象上来。
在MDD模型驱动开发下,先有领域模型,而界面模型是领域模型在界面上的体现,在JSF/Struts2中,都是直接将领域模型作为界面模型,这样你就没有什么拷贝之说,但是这点是有风险的,因为界面对象到底和领域模型是有些区别的,因为界面对象中有一些直接和界面显示有关,如果两者合一,将界面显示相关的字段写到领域模型,这就破坏领域模型的高度性和纯洁性。
所以,我赞成界面对象和领域对象分开,也就有拷贝,从设计上看,因为界面对象大部分和领域对象字段一致,取相同的set/get名称就可以,至于字段不一致,拷贝工具不会拷贝的,也就不会出错,只拷贝相同set/getXXX名称,出错可能是你set/get两个方法没有全部出现,只有一个get/set