Sung in Blog

                     一些技術(shù)文章 & 一些生活雜碎

          模型組件代表應用的業(yè)務數(shù)據(jù)和邏輯.坦率的說Struts框架并沒有為設(shè)計和創(chuàng)建模型組件提供線程的框架.不過Strtus允許使用其他的模型組件來處理應用的業(yè)務領(lǐng)域.如EJB活JDO以及常規(guī)的JavaBean和ORM.

          模型是應用中重要的一部分,它包含了業(yè)務實體和業(yè)務規(guī)則,負責訪問和更新持久化數(shù)據(jù).應該把所有的模型組件放在系統(tǒng)中的同一個位置,這樣利于維護數(shù)據(jù)和完整性,提高可重用性.模型和視圖以及控制器之間保持獨立,在分層框架結(jié)構(gòu)中.位于上層的視圖和控制器依賴于下層的模型的實現(xiàn),而下層的模型不應該依賴于上層的視圖在控制器的實現(xiàn).如果在模型組件中通過JAVA的import語句引入了視圖和控制器組件,這樣的程序就垃圾了.

          在科學和工程技術(shù)領(lǐng)域,模型是一個很有用途的概念,它可以用來模擬一個真是的系統(tǒng).在軟件開發(fā)領(lǐng)域,模型用來表示真是世界的實體.在軟件開發(fā)的不同階段,需要為目標系統(tǒng)創(chuàng)建不同的模型.可以采用面向?qū)ο蟮慕UZ言UML來描述.

          在建模之前首先要對問題域進行詳細的分析,確定用例,接下來可以根據(jù)用例來創(chuàng)建概念模型.概念模型用來模擬問題域中的真實實體.概念模型描述了每個實體的概念和屬性,以及實體之間的關(guān)系.這個階段并不描述實體的行為.比如說商品和商品目錄之間存在多對多的關(guān)系,這是因為一個商品目錄包含多個商品,而一個商品也可以屬于多個商品目錄.

          設(shè)計模型需要在概念模型的基礎(chǔ)上設(shè)計.可以用UML類框圖,活動圖以及狀態(tài)圖來描述設(shè)計模型.根據(jù)UML語言,類之間存在四種關(guān)系:

          1)     關(guān)聯(lián)(Association):就是類之間的引用關(guān)系,

          2)      依賴(Dependency):是指類之間的訪問關(guān)系.

          3)      累積(Aggregation)就是說整體與個體之間的關(guān)系,可以把累積看作一種強關(guān)聯(lián)關(guān)系.

          4)      一般化(Generalization):是類之間的繼承關(guān)系.

          如果想了解如何為應用創(chuàng)建合理的面向?qū)ο蟮脑O(shè)計模型,可以瀏覽www.uml.org深入了解UML語言.

          業(yè)務對象BO(Business Object),是對真是世界的實體的軟件抽象.它可以代表業(yè)務領(lǐng)域中的人,地點,事務或者概念.業(yè)務對象包括狀態(tài)和行為.如果一個類可以作為業(yè)務對象它應該具有以下特征:

          1)     包含狀態(tài)和行為.

          2)      代表業(yè)務領(lǐng)域的人,地點,事務或概念.

          3)      可以重用.

          業(yè)務對象客分為三種類型:

          1)     實體業(yè)務對象.

          2)      過程業(yè)務對象.

          3)      事件業(yè)務對象.

          實體對象就是具體的對象,比如人,地點,商品,訂單.過程對象就是業(yè)務過程或者流程,

          他們通常依賴于實體對象.可以把業(yè)務領(lǐng)域的動詞,比如登陸,發(fā)貨等作為過程對象.事件對象代表一些時間如比異常,警告,超時,錯誤.這些事件通常由系統(tǒng)中的行為觸發(fā)器激活.在應用使用業(yè)務對象好處很多,最重要的一點就是業(yè)務對象提供了通用的技術(shù)術(shù)語和概念,不管技術(shù)人員還是非技術(shù)人員都可以共享理解它們.此外業(yè)務對象可以隱藏實現(xiàn)的細節(jié),對外只暴露接口,提高了安全性.

          通常,持久化意味著通過手工或者其他方法輸入到應用中的數(shù)據(jù),能夠在應用結(jié)束運行后依然存在.即使應用運行結(jié)束或者計算機關(guān)閉,這些信息依然存在.當應用中的業(yè)務對象在內(nèi)存中創(chuàng)建后,他們不可能永遠存在.最后,他們要么消失,要么就要被持久化到數(shù)據(jù)庫中.內(nèi)存無法永久保留數(shù)據(jù),因此必須對業(yè)務對象進行持久化.關(guān)系型數(shù)據(jù)庫被廣泛用來存儲數(shù)據(jù).關(guān)系型數(shù)據(jù)庫中存放的是關(guān)系型數(shù)據(jù).它是非面向?qū)ο蟮?把業(yè)務對象映射到非面向?qū)ο蟮臄?shù)據(jù)庫中,因為對象由狀態(tài)和行為組成,而關(guān)系數(shù)據(jù)庫則由表組成.對象之間的各種關(guān)系和關(guān)系型數(shù)據(jù)庫中表之間的關(guān)系并不一一對應.例如對象之間繼承關(guān)系就不能直接映射到關(guān)系型數(shù)據(jù)庫中了.而對于JAVA應用,可以直接通過JDBC編程來訪問數(shù)據(jù)庫.JDBC可以說是訪問持久化數(shù)據(jù)層的最原始最直接的方法,如果數(shù)據(jù)模型非常復雜,這里我推薦用Hibernate架構(gòu)來進行持久化層的處理.

          因為Struts中本身不包含處理模型的架構(gòu),所以在這里只是簡單的對模型進行了介紹.至于具體的知識可以研究Ejb,JavaBean等技術(shù).至于持久化層的hibernate架構(gòu),這里我推薦閱讀孫衛(wèi)琴的:<<精通Hibernate>>.

          posted on 2005-10-27 17:30 Sung 閱讀(435) 評論(0)  編輯  收藏 所屬分類: Struts
          主站蜘蛛池模板: 罗定市| 西乌珠穆沁旗| 永州市| 田林县| 侯马市| 鄱阳县| 温泉县| 宁蒗| 尼木县| 通道| 柳江县| 平和县| 裕民县| 都匀市| 五大连池市| 永安市| 剑阁县| 桦南县| 库尔勒市| 罗田县| 左权县| 星子县| 古交市| 定远县| 烟台市| 格尔木市| 泽州县| 青阳县| 吉林市| 西充县| 浪卡子县| 辽阳县| 陈巴尔虎旗| 济阳县| 五常市| 灌南县| 靖宇县| 太谷县| 尼木县| 长乐市| 阳曲县|