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