




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
具有自適應(yīng)能力的值對(duì)象研究
摘要在Web應(yīng)用系統(tǒng)中,具有自適應(yīng)能力的值對(duì)象將極大提高系統(tǒng)的開(kāi)發(fā)效率和運(yùn)行效率。本文主要講述了如何動(dòng)態(tài)創(chuàng)建封裝值對(duì)象。關(guān)鍵詞VO(ValueObject)POSModel
值對(duì)象即值的對(duì)象,簡(jiǎn)稱VO。一個(gè)值對(duì)象實(shí)際上是一個(gè)可序列化的java類,它封裝了客戶端和服務(wù)器端所需要交換的業(yè)務(wù)數(shù)據(jù)。通過(guò)使用值對(duì)象極大地減少系統(tǒng)中客戶端與服務(wù)器端間的網(wǎng)絡(luò)對(duì)話,加速層之間的數(shù)據(jù)交換,從而提高系統(tǒng)的性能。目前的值對(duì)象多采用java的反射機(jī)制在程序的運(yùn)行期間創(chuàng)建和維護(hù)任何類的對(duì)象,而不提前對(duì)目標(biāo)類進(jìn)行硬編碼。Java語(yǔ)言的反射機(jī)制提供了一種非常通用的動(dòng)態(tài)連接程序組件的方法。這種機(jī)制使得反射在創(chuàng)建與對(duì)象一同工作的類庫(kù)中的通用方法方面非常有用。但是反射有兩個(gè)缺點(diǎn),一個(gè)是性能問(wèn)題。在使用屬性字段和方法訪問(wèn)的時(shí)候,反射要比直接的代碼訪問(wèn)要慢很多。至于影響的程度,則依賴于在程序中怎樣使用反射。如果要在執(zhí)行應(yīng)用程序的核心邏輯中使用反射,性能問(wèn)題是一個(gè)嚴(yán)肅的問(wèn)題。其次,使用反射可以使你的實(shí)際的代碼內(nèi)部邏輯變得模糊不清。程序員都希望在源代碼中看到一個(gè)程序的邏輯以及象繞過(guò)源代碼的反射所可能產(chǎn)生的維護(hù)問(wèn)題這樣的一些技術(shù)。反射代碼也比相應(yīng)的直接代碼要復(fù)雜一些。此外編寫(xiě)值對(duì)象也是一項(xiàng)枯燥乏味的工作。針對(duì)以上的問(wèn)題,本文提出了一個(gè)基于元數(shù)據(jù)描述的值對(duì)象解決方案。通過(guò)該方案生成的值對(duì)象具有良好的自描述能力和自適應(yīng)能力,通過(guò)定制元數(shù)據(jù),用戶可以從乏味的值對(duì)象硬編碼工作中解脫出來(lái);同時(shí)摒棄了Java的反射機(jī)制,提高了系統(tǒng)的性能,使程序的邏輯更加清晰。值對(duì)象作為一種客戶端和服務(wù)器端數(shù)據(jù)交換的載體,其所容納和傳輸?shù)牟煌夂酢皩傩悦?屬性值”對(duì)這樣的數(shù)據(jù)。基于上述特點(diǎn),本文設(shè)計(jì)了POSModel類,該類作為所有值對(duì)象的基類,動(dòng)態(tài)封裝“屬性名/屬性值”放入Map類型的變量,向外界提供統(tǒng)一的接口用于操縱業(yè)務(wù)對(duì)象的數(shù)據(jù)。其類圖如圖1所示圖1POSModel實(shí)現(xiàn)了Serializable接口,可以作為遠(yuǎn)程方法調(diào)用(RomoteMethodInvoke,RMI)的參數(shù)在網(wǎng)絡(luò)上傳輸。由于POSModel可以容納任何類型的“屬性名/屬性值”,對(duì)這樣的數(shù)據(jù),而與實(shí)體Bean無(wú)關(guān),其所容納的數(shù)據(jù)也可以在系統(tǒng)運(yùn)行時(shí)根據(jù)需要?jiǎng)討B(tài)地改變,而不象JavaBean類值對(duì)象那樣由于需要封裝實(shí)體Bean的全部數(shù)據(jù)而導(dǎo)致不必要的數(shù)據(jù)傳輸,故而可以用它來(lái)做為客戶端和服務(wù)器端間一種通用、動(dòng)態(tài)的數(shù)據(jù)交換載體,而無(wú)須再實(shí)現(xiàn)一個(gè)個(gè)具體的JavaBean,這就大大減少系統(tǒng)中的硬編碼工作量:因?yàn)楦揪筒恍枰獮橹祵?duì)象提供任何的編碼實(shí)現(xiàn),而且也提高了系統(tǒng)的可維護(hù)性。除此之外,POSModel類提供以下功能:u對(duì)字段屬性有效性的校驗(yàn)u支持兩種類型的數(shù)據(jù)u把所有數(shù)字類型的數(shù)據(jù)都當(dāng)作字符型來(lái)操作u用空字符代表nullu為在html頁(yè)面上顯示數(shù)據(jù)提供了htmlEncode方法,用于過(guò)濾掉特殊字符按照ORM理論,類和關(guān)系數(shù)據(jù)庫(kù)中的表對(duì)應(yīng),對(duì)象和表中的記錄對(duì)應(yīng),對(duì)象的屬性和表的字段對(duì)應(yīng)。而POSModel類動(dòng)態(tài)封裝了對(duì)象的“屬性名/屬性值”對(duì)數(shù)據(jù),為此我們?cè)O(shè)計(jì)了一個(gè)xml文件用于建立對(duì)象到關(guān)系數(shù)據(jù)庫(kù)的映射,其Schema文件主要代碼?xmlversion=""encoding="utf-8"?xsd:schemaxmlns:xsd="http:///2001/XMLSchema"xsd:elementname="field"xsd:attributename="name"type="xsd:string"use="optional"/xsd:attributename="tabField"type="xsd:string"use="optional"/xsd:attributename="type"type="xsd:string"use="optional"http://xsd:elementxsd:elementname="fields"xsd:elementmaxOccurs="unbounded"minOccurs="1"ref="field"http://xsd:elementxsd:elementname="model"xsd:elementref="table"/xsd:elementref="fields"/
xsd:elementref="relations"/xsd:elementref="primaryKeys"http://xsd:elementxsd:elementname="posModels"xsd:elementref="model"http://xsd:element......../xsd:schema⑴用ModelXMLParse類解析XML映射文件,將每一個(gè)model節(jié)點(diǎn)封裝成TableModel對(duì)象,并把節(jié)點(diǎn)名作為鍵、TableModel對(duì)象作為值封裝到哈希表,放入緩存中。⑵業(yè)務(wù)對(duì)象發(fā)出創(chuàng)建POSModel類的實(shí)例請(qǐng)求時(shí),根據(jù)對(duì)象名從緩存中找到對(duì)應(yīng)的TableModel對(duì)象,創(chuàng)建具體POSModel類實(shí)例。相關(guān)實(shí)現(xiàn)類圖如圖2所示:圖2業(yè)務(wù)對(duì)象負(fù)責(zé)創(chuàng)建值對(duì)象,并根據(jù)請(qǐng)求將其傳送到相關(guān)的客戶端;業(yè)務(wù)對(duì)象也可以從用戶處獲取一個(gè)值對(duì)象格式的數(shù)據(jù),并應(yīng)用這些數(shù)據(jù)來(lái)執(zhí)行一些更新。用戶通過(guò)訪問(wèn)業(yè)務(wù)對(duì)象,既得到了所需的信息,也對(duì)相關(guān)數(shù)據(jù)做出了一定的修改。用戶從業(yè)務(wù)對(duì)象的方法得到值對(duì)象時(shí),可以直接調(diào)用值對(duì)象的成員方法進(jìn)行本地?cái)?shù)據(jù)訪問(wèn),當(dāng)然這種本地?cái)?shù)據(jù)訪問(wèn)不會(huì)影響到業(yè)務(wù)對(duì)象。此過(guò)程的序列圖如圖3所示:圖3這一數(shù)據(jù)封裝模式已在某大型電子政務(wù)軟件中成功應(yīng)用,系統(tǒng)所采用的體系結(jié)構(gòu)Web應(yīng)用框架在J2EE體系下的實(shí)現(xiàn),也在多個(gè)大型的Web應(yīng)用系統(tǒng)中取得成功。當(dāng)然,這種數(shù)據(jù)封住模式在對(duì)關(guān)聯(lián)表的支持、增加圖形用戶界面方便XML文件的錄入方面還需作進(jìn)一步的完善。本文所闡述的結(jié)構(gòu),具有以下幾個(gè)特點(diǎn):l運(yùn)行期間動(dòng)態(tài)封裝值對(duì)象的結(jié)構(gòu)。l利用良好的對(duì)象封裝技術(shù),可以方便的實(shí)現(xiàn)對(duì)數(shù)據(jù)的各種操作。l對(duì)于數(shù)據(jù)結(jié)構(gòu)并不固定的系統(tǒng),應(yīng)用此結(jié)構(gòu),大大簡(jiǎn)化了代碼維護(hù)的工作量。參
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 聘任專家協(xié)議書(shū)
- 教師赴企業(yè)培訓(xùn)協(xié)議書(shū)
- 美簽互換協(xié)議書(shū)
- 租賃期權(quán)協(xié)議書(shū)
- 紫光展銳協(xié)議書(shū)
- 生產(chǎn)線外包合同協(xié)議書(shū)
- 貓咪售后協(xié)議書(shū)
- 職場(chǎng)體驗(yàn)協(xié)議書(shū)
- 校區(qū)合伙人合同協(xié)議書(shū)
- 藥品進(jìn)貨協(xié)議書(shū)
- 2024年考研英語(yǔ)真題及答案(完整版)
- 高等數(shù)學(xué)課件第一章函數(shù)與極限
- 寵物藥品研究報(bào)告-中國(guó)寵物藥品市場(chǎng)深度全景調(diào)研及投資前景分析報(bào)告2024年
- 屋頂-坡屋頂構(gòu)造(建筑構(gòu)造)
- 我在伊朗長(zhǎng)大
- 臨床醫(yī)學(xué)概論課程的婦產(chǎn)科學(xué)與婦產(chǎn)科手術(shù)
- 30題紀(jì)檢監(jiān)察位崗位常見(jiàn)面試問(wèn)題含HR問(wèn)題考察點(diǎn)及參考回答
- 中職英語(yǔ)基礎(chǔ)模塊一Unit 8 People and events Reading
- 咖啡師職業(yè)生涯規(guī)劃書(shū)
- 光伏電站事故處理規(guī)程
- 汽車租賃經(jīng)營(yíng)許可申請(qǐng)表
評(píng)論
0/150
提交評(píng)論