模型組件代表應用的業(yè)務數(shù)據(jù)和邏輯.坦率的說Struts框架并沒有為設計和創(chuàng)建模型組件提供線程的框架.不過Strtus允許使用其他的模型組件來處理應用的業(yè)務領域.如EJB活JDO以及常規(guī)的JavaBean和ORM.
模型是應用中重要的一部分,它包含了業(yè)務實體和業(yè)務規(guī)則,負責訪問和更新持久化數(shù)據(jù).應該把所有的模型組件放在系統(tǒng)中的同一個位置,這樣利于維護數(shù)據(jù)和完整性,提高可重用性.模型和視圖以及控制器之間保持獨立,在分層框架結構中.位于上層的視圖和控制器依賴于下層的模型的實現(xiàn),而下層的模型不應該依賴于上層的視圖在控制器的實現(xiàn).如果在模型組件中通過JAVA的import語句引入了視圖和控制器組件,這樣的程序就垃圾了.
在科學和工程技術領域,模型是一個很有用途的概念,它可以用來模擬一個真是的系統(tǒng).在軟件開發(fā)領域,模型用來表示真是世界的實體.在軟件開發(fā)的不同階段,需要為目標系統(tǒng)創(chuàng)建不同的模型.可以采用面向對象的建模語言UML來描述.
在建模之前首先要對問題域進行詳細的分析,確定用例,接下來可以根據(jù)用例來創(chuàng)建概念模型.概念模型用來模擬問題域中的真實實體.概念模型描述了每個實體的概念和屬性,以及實體之間的關系.這個階段并不描述實體的行為.比如說商品和商品目錄之間存在多對多的關系,這是因為一個商品目錄包含多個商品,而一個商品也可以屬于多個商品目錄.
設計模型需要在概念模型的基礎上設計.可以用UML類框圖,活動圖以及狀態(tài)圖來描述設計模型.根據(jù)UML語言,類之間存在四種關系:
1) 關聯(lián)(Association):就是類之間的引用關系,
2) 依賴(Dependency):是指類之間的訪問關系.
3) 累積(Aggregation)就是說整體與個體之間的關系,可以把累積看作一種強關聯(lián)關系.
4) 一般化(Generalization):是類之間的繼承關系.
如果想了解如何為應用創(chuàng)建合理的面向對象的設計模型,可以瀏覽www.uml.org深入了解UML語言.
業(yè)務對象BO(Business Object),是對真是世界的實體的軟件抽象.它可以代表業(yè)務領域中的人,地點,事務或者概念.業(yè)務對象包括狀態(tài)和行為.如果一個類可以作為業(yè)務對象它應該具有以下特征:
1) 包含狀態(tài)和行為.
2) 代表業(yè)務領域的人,地點,事務或概念.
3) 可以重用.
業(yè)務對象客分為三種類型:
1) 實體業(yè)務對象.
2) 過程業(yè)務對象.
3) 事件業(yè)務對象.
實體對象就是具體的對象,比如人,地點,商品,訂單.過程對象就是業(yè)務過程或者流程,
他們通常依賴于實體對象.可以把業(yè)務領域的動詞,比如登陸,發(fā)貨等作為過程對象.事件對象代表一些時間如比異常,警告,超時,錯誤.這些事件通常由系統(tǒng)中的行為觸發(fā)器激活.在應用使用業(yè)務對象好處很多,最重要的一點就是業(yè)務對象提供了通用的技術術語和概念,不管技術人員還是非技術人員都可以共享理解它們.此外業(yè)務對象可以隱藏實現(xiàn)的細節(jié),對外只暴露接口,提高了安全性.
通常,持久化意味著通過手工或者其他方法輸入到應用中的數(shù)據(jù),能夠在應用結束運行后依然存在.即使應用運行結束或者計算機關閉,這些信息依然存在.當應用中的業(yè)務對象在內存中創(chuàng)建后,他們不可能永遠存在.最后,他們要么消失,要么就要被持久化到數(shù)據(jù)庫中.內存無法永久保留數(shù)據(jù),因此必須對業(yè)務對象進行持久化.關系型數(shù)據(jù)庫被廣泛用來存儲數(shù)據(jù).關系型數(shù)據(jù)庫中存放的是關系型數(shù)據(jù).它是非面向對象的.把業(yè)務對象映射到非面向對象的數(shù)據(jù)庫中,因為對象由狀態(tài)和行為組成,而關系數(shù)據(jù)庫則由表組成.對象之間的各種關系和關系型數(shù)據(jù)庫中表之間的關系并不一一對應.例如對象之間繼承關系就不能直接映射到關系型數(shù)據(jù)庫中了.而對于JAVA應用,可以直接通過JDBC編程來訪問數(shù)據(jù)庫.JDBC可以說是訪問持久化數(shù)據(jù)層的最原始最直接的方法,如果數(shù)據(jù)模型非常復雜,這里我推薦用Hibernate架構來進行持久化層的處理.
因為Struts中本身不包含處理模型的架構,所以在這里只是簡單的對模型進行了介紹.至于具體的知識可以研究Ejb,JavaBean等技術.至于持久化層的hibernate架構,這里我推薦閱讀孫衛(wèi)琴的:<<精通Hibernate>>.(網友們的支持,是我繼續(xù)寫技術文章的動力!)
posted on 2005-10-25 12:27
我心依舊 閱讀(1146)
評論(2) 編輯 收藏