Posted on 2006-11-09 20:31
itspy 閱讀(2045)
評論(0) 編輯 收藏 所屬分類:
JAVA技術
最近因為可能的工作需要,又開始學習JAVA相關技術了。因為沒有明確的技術方向,只好還是從高層學習起,學習各種框架設計思想,學習模式。
?
順手從手邊拿起一本Struts書《Struts程序員查詢辭典》,看起里面的MVC講解,說真的這本書講的還真不錯,以前看了好多書都不太明白的東西,這一次看什么就明白什么。想想也可能是因為現在有了一定的實踐經驗,要是我以前拿到這本書,可能也是看不懂。反正這個是無從考證了。
?
說到這使我想起以前的一個笑話,一個傻子買了3個大餅,吃了前兩個都沒吃飽,到第三個才吃飽。于是嘆道:早知道,我就只買第三個了,前兩個餅沒用。
?
我看多半,是因為看的多了,加上之前在公司的實踐學習的原因,才能使我這次看這個MVC一看就能明白書上在說什么。
?
記得以前剛開始看Struts時,還以為struts的FormBean是Model層的,還是一位高手告訴我不對,當時我還不太信(不相信權威^--^),當然不久我就知道是我搞錯了。
?
MVC,其實Struts根本就沒有實現M層。它都是直接使用現有的其它技術。比如M層,就可以使用EJB,或者是DAO模式來實現。從書中,我明白了,原來Model層也分了好幾層,接口層,事務邏輯層,數據訪問層。以前Appfuse中為什么把一個DAO分成好幾塊,以前一直不太明白,這幾塊分別是干嘛的。
?
現在有了一些重新的感悟寫下來,不知道對不對,要有不對的請各位看客指出。
用過Appfuse的應該知道,在src/dao目錄下面有四層,org.appfuse,org.appfuse.dao,org.appfuse.hibernate,org.appfuse.model。其中第一層org.appfuse中放的東西,用處不大,里面放置了些常量定義。另外三層分別定義了,dao的接口,dao的hibernate的實現類,和數據傳遞對象(DTO)。上面這些應該都沒有業務邏輯的處理才對,以前早期開發時由于不太明白Appfuse的分層原則,也不理解Struts分層的Model層是如何劃分的,在這些層中放入了一些業務邏輯。沒有找到對應的單獨的事務邏輯層,這一層應該放在了dao的hibernate的實現類里面了。
?
在Appfuse中,好像添加了一個新的層,應該算做是業務邏輯層,也就是在src/service里面。他里面定義了接口,及接口的實現,還有這一層通用的功能塊。通過我的理解,這一層應該主要是體現業務邏輯。也就是提供給Struts層的Action來進行調用。
?
也就是MVC在Appfuse的Struts版本里面,M實現的是對數據庫的操作及一些領域模型的實現;V就視圖,這個在Appfuse里面沒有什么含糊的;另外C只是相當于一個路由的功能,把不同的請求交給不同的業務邏輯處理,把結果交給不同的VIEW去顯示。然后Appfuse在MC之間添加了一個業務邏輯層(src/service)。
?
最近的學習體會,不知對不對,希望有高手指出不對的地方。