1. 在我看来,ActionForm是专用于表示层的,所以它依赖Struts这个web框架,也是很自然的。
当然我知道很多人觉得Action Form不好的原因之一就是它强迫开发者继承ActionForm基类。
2. Action Form的最佳实践就是只用String类型的属性。如果想用自动类型转换,十有八九是要吃苦头的,
这确实是一个缺陷,但是以我之见,这也不是什么硬伤。无非是需要写action form转换到DDO的代码。
3. 关于ActionForm是不是POJO的问题,我的认识是ActionForm也是POJO,因为你能创建它,控制它。在我看来只有EJB不是POJO。因为它是通过代码生成技术生成最终的,我们没有办法控制。
4. 我认为ActionForm并非无可救药的最关键因素是。在J2EE的世界,不论是JavaBean,还是ActionForm,还是DDO,DTO,VallueObject。从面向对象的角度看,都不是真正的对象。为生么这么说呢?首先它不符合Encapsulation特性。可以说一旦需求改变,需要增加属性,减少属性,接口就必须改变。所以即使它们具有public方法,private 属性的形式。在本质上实现和接口仍然是紧偶合的。在这样的基础上,我们赋予它们过多的重要性也许没有什么意义。也就是说即使有更好的方案来取代ActionForm,也不过是锦上添花而已。
5. 和DDO比较而言,DDO因为可以跨越多层,所以代码可以更简洁。而如果在表示层使用ActionForm,则需要将ActionForm转换成Service层DDO,转换的代码比较烦琐;但是用actionForm也有也各好处,表示层独立性更强了,尤其是JSP完全独立了,不再依赖service层的DDO。在service层和表示层分别由不同团队开发的情况下,这种设计是有实际价值的。
期待着大家的批判。