请教Struts架构设计问题:DAO + VO + (Struts)Action + (Struts)ActionForm
我在做Struts方面的架构设计,我原本的打算是仅仅使用Struts的Action而不使用ActionForm,也就是DAO + VO + (Struts)Action(不包括其他的非关键的类的情况下),这样我充分的利用了Struts的Control而减少了一些代码工作,实际上,这相当于自己写的框架只是用别人的现成的一些东西。
但我同事说这样理解困难而我自己也没有多少Struts的实际的经验,故放弃这样做的设计方式。采用保守的方式如下:DAO + VO + (Struts)Action + (Struts)ActionForm(不包括其他的非关键的类的情况下),但是这里也有一些问题:
1:VO 和 (Struts)ActionForm 都是对数据的封装,所以功能有重复的地方,怎么样做到如下要求呢?
(1):避免拷贝、粘贴代码的方式写这两个类,虽然不是我写代码,但我不希望增加程序员的工作,并且这样的维护是有些问题的,需要维护相同的代码2份;
(2):假设我在 (Struts)ActionForm 中对 VO 进行代理的访问,也是增加了和(1)差不多的手工代码;
(3):假设我使用 VO 扩展 (Struts)ActionForm 并实现序列化的话,我的 VO 仅仅是个空类,这样我觉得不好;
(4):对于(3),还有一个很重要的问题就是,两者的功能重复,那么程序员使用的时候很可能混合使用这两个类,这是不好的做法。
2:我的同事对于 VO + DAO 接触少,所以问我这样的好处在哪里?我觉得在于提高网络传输效率、结构的清晰和扩展容易(如扩展到EJB)。你觉得呢?
3:我还是在 VO 和 (Struts)ActionForm 有些拿不定主意,我不希望过分的绑定到Struts,也不希望多写手工的代码,更不希望结构的不清晰。
我是懒人,希望一次做好事情。说说你的看法吧,我对Struts缺少经验。