1. 在我看來,ActionForm是專用于表示層的,所以它依賴Struts這個web框架,也是很自然的。
當然我知道很多人覺得Action Form不好的原因之一就是它強迫開發(fā)者繼承ActionForm基類。
2. Action Form的最佳實踐就是只用String類型的屬性。如果想用自動類型轉(zhuǎn)換,十有八九是要吃苦頭的,
這確實是一個缺陷,但是以我之見,這也不是什么硬傷。無非是需要寫action form轉(zhuǎn)換到DDO的代碼。
3. 關(guān)于ActionForm是不是POJO的問題,我的認識是ActionForm也是POJO,因為你能創(chuàng)建它,控制它。在我看來只有EJB不是POJO。因為它是通過代碼生成技術(shù)生成最終的,我們沒有辦法控制。
4. 我認為ActionForm并非無可救藥的最關(guān)鍵因素是。在J2EE的世界,不論是JavaBean,還是ActionForm,還是DDO,DTO,VallueObject。從面向?qū)ο蟮慕嵌瓤矗疾皇钦嬲膶ο蟆樯催@么說呢?首先它不符合Encapsulation特性。可以說一旦需求改變,需要增加屬性,減少屬性,接口就必須改變。所以即使它們具有public方法,private 屬性的形式。在本質(zhì)上實現(xiàn)和接口仍然是緊偶合的。在這樣的基礎上,我們賦予它們過多的重要性也許沒有什么意義。也就是說即使有更好的方案來取代ActionForm,也不過是錦上添花而已。
5. 和DDO比較而言,DDO因為可以跨越多層,所以代碼可以更簡潔。而如果在表示層使用ActionForm,則需要將ActionForm轉(zhuǎn)換成Service層DDO,轉(zhuǎn)換的代碼比較煩瑣;但是用actionForm也有也各好處,表示層獨立性更強了,尤其是JSP完全獨立了,不再依賴service層的DDO。在service層和表示層分別由不同團隊開發(fā)的情況下,這種設計是有實際價值的。
期待著大家的批判。