基于mvc的數(shù)據(jù)提取方法及裝置制造方法
【專利摘要】一種基于MVC的數(shù)據(jù)提取方法,包括:獲取控制層對(duì)象的數(shù)據(jù)提取請(qǐng)求;獲取所述數(shù)據(jù)提取請(qǐng)求對(duì)應(yīng)的網(wǎng)絡(luò)地址參數(shù)和數(shù)據(jù)載體對(duì)象;根據(jù)所述網(wǎng)絡(luò)地址參數(shù)通過(guò)調(diào)用所述數(shù)據(jù)載體對(duì)象的網(wǎng)絡(luò)數(shù)據(jù)抓取函數(shù)抓取網(wǎng)絡(luò)數(shù)據(jù);根據(jù)所述數(shù)據(jù)載體對(duì)象對(duì)抓取到的網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行解析,根據(jù)解析得到的數(shù)據(jù)對(duì)所述數(shù)據(jù)載體對(duì)象進(jìn)行賦值;將所述數(shù)據(jù)載體對(duì)象返回給與所述數(shù)據(jù)提取請(qǐng)求對(duì)應(yīng)的控制層對(duì)象。此外,還提供了一種基于MVC的數(shù)據(jù)提取裝置。上述基于MVC的數(shù)據(jù)提取方法及裝置能夠提高擴(kuò)展性。
【專利說(shuō)明】基于MVC的數(shù)據(jù)提取方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算【技術(shù)領(lǐng)域】,特別是涉及一種基于MVC的數(shù)據(jù)提取方法及裝置。
【背景技術(shù)】
[0002]在傳統(tǒng)的MVC (Model-View-Controller,模型-視圖-控制器模式)設(shè)計(jì)范式中,數(shù)據(jù)流由控制層對(duì)象進(jìn)行控制,控制層對(duì)象可從模型層對(duì)象中提取數(shù)據(jù)并發(fā)送至視圖層對(duì)象進(jìn)行展示,也可接收由視圖層對(duì)象獲取的輸入數(shù)據(jù),將其存儲(chǔ)到模型層對(duì)象中。
[0003]而且,控制層對(duì)象還通常需要根據(jù)業(yè)務(wù)需求抓取網(wǎng)絡(luò)數(shù)據(jù),然后在控制層將抓取到的網(wǎng)絡(luò)數(shù)據(jù)封裝成數(shù)據(jù)載體對(duì)象,然后再將該數(shù)據(jù)載體對(duì)象發(fā)送至視圖層進(jìn)行展示,且將該數(shù)據(jù)載體對(duì)象存儲(chǔ)到模型層中。
[0004]然而,發(fā)明人經(jīng)研究發(fā)現(xiàn)現(xiàn)有的數(shù)據(jù)提取方法至少存在以下問(wèn)題:傳統(tǒng)技術(shù)中的數(shù)據(jù)提取方法需要由控制層對(duì)象抓取網(wǎng)絡(luò)數(shù)據(jù),然后根據(jù)模型層定義的數(shù)據(jù)載體對(duì)象封裝網(wǎng)絡(luò)數(shù)據(jù),使得控制層和模型層之間耦合度增加,即需要對(duì)數(shù)據(jù)載體對(duì)象的類屬性項(xiàng)進(jìn)行修改時(shí),需要相應(yīng)地修改控制層的代碼,從而降低了擴(kuò)展性。
【發(fā)明內(nèi)容】
[0005]基于此,有必要提供一種能提高擴(kuò)展性的基于MVC的數(shù)據(jù)提取方法。
[0006]一種基于MVC的數(shù)據(jù)提取方法,包括:
[0007]獲取控制層對(duì)象的數(shù)據(jù)提取請(qǐng)求;
[0008]獲取所述數(shù)據(jù)提取請(qǐng)求對(duì)應(yīng)的網(wǎng)絡(luò)地址參數(shù)和數(shù)據(jù)載體對(duì)象;
[0009]根據(jù)所述網(wǎng)絡(luò)地址參數(shù)通過(guò)調(diào)用所述數(shù)據(jù)載體對(duì)象的網(wǎng)絡(luò)數(shù)據(jù)抓取函數(shù)抓取網(wǎng)絡(luò)數(shù)據(jù);
[0010]根據(jù)所述數(shù)據(jù)載體對(duì)象對(duì)抓取到的網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行解析,根據(jù)解析得到的數(shù)據(jù)對(duì)所述數(shù)據(jù)載體對(duì)象進(jìn)行賦值;
[0011]將所述數(shù)據(jù)載體對(duì)象返回給與所述數(shù)據(jù)提取請(qǐng)求對(duì)應(yīng)的控制層對(duì)象。
[0012]此外,還有必要提供一種能提高擴(kuò)展性的基于MVC的數(shù)據(jù)提取裝置。
[0013]一種基于MVC的數(shù)據(jù)提取裝置,包括:
[0014]請(qǐng)求獲取模塊,用于獲取控制層對(duì)象的數(shù)據(jù)提取請(qǐng)求;
[0015]數(shù)據(jù)載體對(duì)象獲取模塊,用于獲取所述數(shù)據(jù)提取請(qǐng)求對(duì)應(yīng)的網(wǎng)絡(luò)地址參數(shù)和數(shù)據(jù)載體對(duì)象;
[0016]數(shù)據(jù)抓取模塊,用于根據(jù)所述網(wǎng)絡(luò)地址參數(shù)通過(guò)調(diào)用所述數(shù)據(jù)載體對(duì)象的網(wǎng)絡(luò)數(shù)據(jù)抓取函數(shù)抓取網(wǎng)絡(luò)數(shù)據(jù);
[0017]數(shù)據(jù)封裝模塊,用于根據(jù)所述數(shù)據(jù)載體對(duì)象對(duì)抓取到的網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行解析,根據(jù)解析得到的數(shù)據(jù)對(duì)所述數(shù)據(jù)載體對(duì)象進(jìn)行賦值;
[0018]數(shù)據(jù)返回模塊,用于將所述數(shù)據(jù)載體對(duì)象返回給與所述數(shù)據(jù)提取請(qǐng)求對(duì)應(yīng)的控制層對(duì)象。
[0019]上述基于MVC的數(shù)據(jù)提取方法及裝置,由屬于模型層的數(shù)據(jù)載體對(duì)象抓取網(wǎng)絡(luò)數(shù)據(jù),并將抓取到的網(wǎng)絡(luò)數(shù)據(jù)通過(guò)回調(diào)函數(shù)解析后設(shè)置為數(shù)據(jù)載體對(duì)象的類屬性并返回。對(duì)于控制層對(duì)象而言,數(shù)據(jù)載體對(duì)象的網(wǎng)絡(luò)數(shù)據(jù)抓取操作為透明狀態(tài),數(shù)據(jù)載體對(duì)象的類屬性值是由網(wǎng)絡(luò)數(shù)據(jù)抓取得到或是由模型層的存儲(chǔ)數(shù)據(jù)得到均不影響控制層對(duì)象的實(shí)現(xiàn),使得控制層對(duì)象和模型層對(duì)象的耦合度降低,從而提高了擴(kuò)展性。
【專利附圖】
【附圖說(shuō)明】
[0020]圖1為一個(gè)實(shí)施例中MVC架構(gòu)示意圖;
[0021]圖2為一個(gè)實(shí)施例中基于MVC的數(shù)據(jù)提取方法的流程圖;
[0022]圖3為一個(gè)實(shí)施例中基于MVC的數(shù)據(jù)提取裝置的結(jié)構(gòu)示意圖;
[0023]圖4為另一個(gè)實(shí)施例中基于MVC的數(shù)據(jù)提取裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0024]MVC 全名是 Model-View-Controller,是模型(model)、視圖(view)、控制器(controller)的縮寫,一種軟件設(shè)計(jì)典范,用于組織代碼用一種業(yè)務(wù)邏輯和數(shù)據(jù)顯示分離的軟件架構(gòu),這個(gè)方法的假設(shè)前提是如果業(yè)務(wù)邏輯被聚集到一個(gè)部件里面,而且界面和用戶圍繞數(shù)據(jù)的交互能被改進(jìn)和個(gè)性化定制而不需要重新編寫業(yè)務(wù)邏輯MVC被獨(dú)特的發(fā)展起來(lái)用于映射傳統(tǒng)的輸入、處理和輸出功能在一個(gè)邏輯的圖形化用戶界面的結(jié)構(gòu)中。
[0025]如圖1所示,視圖層對(duì)象用于定義數(shù)據(jù)的展示方式以及樣式,模型層對(duì)象用于數(shù)據(jù)的持久化存儲(chǔ),控制層對(duì)象則用于根據(jù)預(yù)設(shè)的讀取業(yè)務(wù)邏輯從模型層對(duì)象中提取數(shù)據(jù),并發(fā)送給視圖層對(duì)象進(jìn)行表達(dá),也用于根據(jù)預(yù)設(shè)的寫入業(yè)務(wù)邏輯將用戶通過(guò)視圖層對(duì)象輸入的數(shù)據(jù)篩選或封裝后傳遞給模型層對(duì)象進(jìn)行持久化存儲(chǔ)。從功能上講,視圖層對(duì)象、控制層對(duì)象和模型層對(duì)象各自功能獨(dú)立,層與層之間耦合度較低,從而擴(kuò)展性較強(qiáng)。
[0026]在一個(gè)實(shí)施例中,如圖2所示,一種基于MVC的數(shù)據(jù)提取方法,該方法完全依賴于計(jì)算機(jī)程序且基于前述的MVC架構(gòu),該計(jì)算機(jī)程序可運(yùn)行于基于馮洛伊曼體系的計(jì)算機(jī)系統(tǒng)上。
[0027]該方法包括以下步驟:
[0028]步驟S102,獲取控制層對(duì)象的數(shù)據(jù)提取請(qǐng)求。
[0029]步驟S104,獲取數(shù)據(jù)提取請(qǐng)求對(duì)應(yīng)的網(wǎng)絡(luò)地址參數(shù)和數(shù)據(jù)載體對(duì)象。
[0030]在本實(shí)施例中,數(shù)據(jù)提取請(qǐng)求由控制層對(duì)象發(fā)起,由模型層對(duì)象受理。若控制層對(duì)象中的業(yè)務(wù)邏輯需要通過(guò)網(wǎng)絡(luò)抓取外部的網(wǎng)絡(luò)數(shù)據(jù),則可在數(shù)據(jù)提取請(qǐng)求中加入相應(yīng)的網(wǎng)絡(luò)地址參數(shù)。
[0031]數(shù)據(jù)載體對(duì)象為通過(guò)類屬性緩存數(shù)據(jù),用于在軟件模塊之間傳遞的數(shù)據(jù)對(duì)象。在一個(gè)應(yīng)用場(chǎng)景中,若模型層持久化存儲(chǔ)的方式為數(shù)據(jù)庫(kù)存儲(chǔ)方式,數(shù)據(jù)載體對(duì)象可以是VO對(duì)象(value object)對(duì)象,數(shù)據(jù)庫(kù)中用戶表可對(duì)應(yīng)用戶VO對(duì)象,用戶表中的各個(gè)字段與用戶VO對(duì)象的各個(gè)類屬性項(xiàng)對(duì)應(yīng)。例如,數(shù)據(jù)庫(kù)中用戶表的name字段和age字段可對(duì)應(yīng)用戶VO對(duì)象中的name屬性和age屬性。
[0032]在本實(shí)施例中,可根據(jù)MVC框架的數(shù)據(jù)映射配置獲取數(shù)據(jù)提取請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)載體類型標(biāo)識(shí)。例如,用戶VO對(duì)象在MVC框架的數(shù)據(jù)映射配置中對(duì)應(yīng)有與用戶業(yè)務(wù)邏輯相關(guān)的控制層對(duì)象;微博VO對(duì)象在MVC框架的數(shù)據(jù)映射配置中對(duì)應(yīng)有與微博業(yè)務(wù)邏輯相關(guān)的控制層對(duì)象。則與用戶業(yè)務(wù)邏輯相關(guān)的控制層對(duì)象發(fā)出的數(shù)據(jù)提取請(qǐng)求即對(duì)應(yīng)用戶VO對(duì)象。
[0033]在本實(shí)施例中,若數(shù)據(jù)提取請(qǐng)求中不包含網(wǎng)絡(luò)地址參數(shù),即若獲取不到網(wǎng)絡(luò)地址參數(shù),則獲取與數(shù)據(jù)提取請(qǐng)求對(duì)應(yīng)的持久化數(shù)據(jù),根據(jù)持久化數(shù)據(jù)生成與數(shù)據(jù)提取請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)載體對(duì)象并返回。
[0034]也就是說(shuō),可根據(jù)數(shù)據(jù)提取請(qǐng)求是否包含網(wǎng)絡(luò)地址參數(shù)進(jìn)行判斷,若包含網(wǎng)絡(luò)地址參數(shù),則表示業(yè)務(wù)層對(duì)象希望獲取的數(shù)據(jù)需要根據(jù)該網(wǎng)絡(luò)地址參數(shù)進(jìn)行網(wǎng)絡(luò)抓??;若不包含網(wǎng)絡(luò)地址參數(shù),則表示業(yè)務(wù)層對(duì)象希望獲取的數(shù)據(jù)為模型層持久化存儲(chǔ)的數(shù)據(jù)。
[0035]例如,若模型層持久化存儲(chǔ)的方式為數(shù)據(jù)庫(kù)存儲(chǔ)方式,則可提取數(shù)據(jù)提取請(qǐng)求對(duì)應(yīng)的關(guān)鍵字,然后在數(shù)據(jù)庫(kù)中查找與該關(guān)鍵字對(duì)應(yīng)的持久化數(shù)據(jù),并根據(jù)數(shù)據(jù)載體類型標(biāo)識(shí)生成相應(yīng)的數(shù)據(jù)載體對(duì)象,并返回。
[0036]例如,在一個(gè)應(yīng)用場(chǎng)景中,數(shù)據(jù)提取請(qǐng)求中僅包含用戶姓名的關(guān)鍵字“張三”,可獲取數(shù)據(jù)庫(kù)中的用戶表,在用戶表中查找與關(guān)鍵字“張三”對(duì)應(yīng)的數(shù)據(jù)項(xiàng),并根據(jù)該數(shù)據(jù)項(xiàng)生成用戶VO對(duì)象,且該用戶VO對(duì)象的name屬性為“張三”,其他類屬性與該數(shù)據(jù)項(xiàng)中其他字段下的值相對(duì)應(yīng)。
[0037]步驟S106,根據(jù)網(wǎng)絡(luò)地址參數(shù)通過(guò)調(diào)用數(shù)據(jù)載體對(duì)象的網(wǎng)絡(luò)數(shù)據(jù)抓取函數(shù)抓取網(wǎng)絡(luò)數(shù)據(jù)。
[0038]網(wǎng)絡(luò)數(shù)據(jù)抓取函數(shù)可以具有多態(tài)的形式,即包含抓取參數(shù)為GET或POST (HTTP協(xié)議中請(qǐng)求的method類型)的網(wǎng)絡(luò)數(shù)據(jù)抓取函數(shù),或者包含返回的網(wǎng)絡(luò)數(shù)據(jù)為xml或json格式??筛鶕?jù)網(wǎng)絡(luò)地址參數(shù)調(diào)用相應(yīng)的網(wǎng)絡(luò)數(shù)據(jù)抓取函數(shù)抓取數(shù)據(jù)。網(wǎng)絡(luò)數(shù)據(jù)抓取函數(shù)抓取到數(shù)據(jù)后即可將數(shù)據(jù)封裝成xml或json的格式。
[0039]步驟S108,根據(jù)數(shù)據(jù)載體對(duì)象對(duì)抓取到的網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行解析,根據(jù)解析得到的數(shù)據(jù)對(duì)數(shù)據(jù)載體對(duì)象進(jìn)行賦值。
[0040]在一個(gè)實(shí)施例中,根據(jù)數(shù)據(jù)載體類型標(biāo)識(shí)對(duì)抓取到的網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行解析的步驟包括:
[0041]獲取數(shù)據(jù)載體對(duì)象對(duì)應(yīng)的數(shù)據(jù)載體類型標(biāo)識(shí);根據(jù)數(shù)據(jù)載體類型標(biāo)識(shí)調(diào)用相應(yīng)的解析函數(shù)對(duì)抓取到的網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行解析。
[0042]也就是說(shuō),在根據(jù)前述的網(wǎng)絡(luò)數(shù)據(jù)抓取函數(shù)抓取到網(wǎng)絡(luò)數(shù)據(jù)之后,即可調(diào)用相應(yīng)的回調(diào)函數(shù)(即在網(wǎng)絡(luò)數(shù)據(jù)抓取函數(shù)返回抓取結(jié)果后執(zhí)行),該回調(diào)函數(shù)可根據(jù)數(shù)據(jù)載體類型標(biāo)識(shí)對(duì)抓取到的網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行解析。例如,若數(shù)據(jù)載體對(duì)象為用戶VO對(duì)象,則數(shù)據(jù)載體類型標(biāo)識(shí)為user,可獲取與user對(duì)應(yīng)的解析函數(shù)或執(zhí)行解析函數(shù)中數(shù)據(jù)載體類型標(biāo)識(shí)為user的條件分支,從而從抓取到的網(wǎng)絡(luò)數(shù)據(jù)中解析出與用戶VO對(duì)象的類屬性項(xiàng)對(duì)應(yīng)的數(shù)據(jù)。
[0043]步驟S110,將數(shù)據(jù)載體對(duì)象返回給與數(shù)據(jù)提取請(qǐng)求對(duì)應(yīng)的控制層對(duì)象。
[0044]在一個(gè)實(shí)施例中,根據(jù)解析得到的數(shù)據(jù)對(duì)數(shù)據(jù)載體對(duì)象進(jìn)行賦值的步驟之后還可根據(jù)賦值后的數(shù)據(jù)載體對(duì)象進(jìn)行存儲(chǔ)。
[0045]例如,在一個(gè)應(yīng)用場(chǎng)景中,若模型層持久化存儲(chǔ)的方式為數(shù)據(jù)庫(kù)存儲(chǔ)方式,則獲取數(shù)據(jù)載體對(duì)象的類屬性的值,然后將其添加到數(shù)據(jù)庫(kù)數(shù)據(jù)表中相應(yīng)的字段下。
[0046]在本應(yīng)用場(chǎng)景中,控制層對(duì)象可提取該數(shù)據(jù)載體對(duì)象的類屬性的值,并發(fā)送至視圖層對(duì)象進(jìn)行展示,例如,若視圖層基于web界面,則用戶名欄中對(duì)應(yīng)顯示用戶VO對(duì)象的name屬性值;年齡欄中對(duì)應(yīng)顯示用戶VO對(duì)象的age屬性值。
[0047]在另一個(gè)實(shí)施例中,數(shù)據(jù)載體對(duì)象繼承自同一數(shù)據(jù)載體接口類。根據(jù)所述網(wǎng)絡(luò)地址參數(shù)通過(guò)調(diào)用所述數(shù)據(jù)載體對(duì)象的網(wǎng)絡(luò)數(shù)據(jù)抓取函數(shù)抓取網(wǎng)絡(luò)數(shù)據(jù)的步驟包括:
[0048]獲取數(shù)據(jù)載體接口類定義的網(wǎng)絡(luò)數(shù)據(jù)抓取函數(shù)。
[0049]將網(wǎng)絡(luò)地址參數(shù)作為函數(shù)參數(shù)傳遞給網(wǎng)絡(luò)數(shù)據(jù)抓取函數(shù),獲取返回的與網(wǎng)絡(luò)地址參數(shù)對(duì)應(yīng)的網(wǎng)絡(luò)數(shù)據(jù)。
[0050]也就是說(shuō),與數(shù)據(jù)提取請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)載體對(duì)象有多種類型,不同控制層對(duì)象發(fā)起的數(shù)據(jù)提取請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)載體對(duì)象可不同。該多種類型的數(shù)據(jù)載體對(duì)象可繼承自同一抽象類或?qū)崿F(xiàn)同一接口,即繼承自同一接口類。網(wǎng)絡(luò)數(shù)據(jù)抓取函數(shù)可預(yù)先定義在該接口類中,即接口類的接口函數(shù)中可包含網(wǎng)絡(luò)數(shù)據(jù)抓取函數(shù)。開發(fā)人員根據(jù)業(yè)務(wù)需要添加數(shù)據(jù)載體對(duì)象的類型時(shí),可以新建同樣繼承自該接口類的數(shù)據(jù)載體對(duì)象的類,該數(shù)據(jù)載體對(duì)象即具有了網(wǎng)絡(luò)數(shù)據(jù)抓取函數(shù),而不用反復(fù)編碼,從而提高了代碼復(fù)用率,進(jìn)而提高了開發(fā)效率。
[0051]在本實(shí)施例中,根據(jù)數(shù)據(jù)載體類型標(biāo)識(shí)對(duì)抓取到的網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行解析的步驟包括:
[0052]獲取與數(shù)據(jù)載體對(duì)象對(duì)應(yīng)的數(shù)據(jù)解析對(duì)象,數(shù)據(jù)解析對(duì)象繼承自同一數(shù)據(jù)解析接口類,根據(jù)抓取到的網(wǎng)絡(luò)數(shù)據(jù)調(diào)用數(shù)據(jù)解析對(duì)象的接口函數(shù)進(jìn)行解析。
[0053]數(shù)據(jù)解析對(duì)象可作為數(shù)據(jù)載體對(duì)象的屬性值與其對(duì)應(yīng),不同的數(shù)據(jù)解析對(duì)象中的解析邏輯不同且與其所屬的數(shù)據(jù)載體對(duì)象對(duì)應(yīng)。
[0054]例如,用戶VO對(duì)象的數(shù)據(jù)解析對(duì)象為userParser對(duì)象,微博VO對(duì)象的數(shù)據(jù)解析對(duì)象為weiboParser對(duì)象。userParser對(duì)象和weiboParser對(duì)象可繼承自同一數(shù)據(jù)解析接口類 AbstractParser, abstractParser 中定義有接口函數(shù) parse。userParser 對(duì)象和weiboParser對(duì)象中對(duì)接口函數(shù)parse的實(shí)現(xiàn)不同,分別為與用戶VO對(duì)象對(duì)應(yīng)的解析邏輯和與微博VO對(duì)象對(duì)應(yīng)的解析邏輯。
[0055]在本實(shí)施例的應(yīng)用場(chǎng)景中,開發(fā)人員在定義新的數(shù)據(jù)載體對(duì)象類型后,可通過(guò)繼承數(shù)據(jù)解析接口類(如上例中的AbstractParser類),根據(jù)與新定義的數(shù)據(jù)載體對(duì)象類型對(duì)應(yīng)解析邏輯實(shí)現(xiàn)數(shù)據(jù)解析接口類的接口函數(shù)(如上例中的parse函數(shù))與來(lái)定義與該數(shù)據(jù)載體對(duì)象類型對(duì)應(yīng)的數(shù)據(jù)解析對(duì)象。
[0056]進(jìn)一步的,前述的數(shù)據(jù)載體接口類中可定義網(wǎng)絡(luò)數(shù)據(jù)抓取函數(shù)的回調(diào)函數(shù)為數(shù)據(jù)解析接口類的接口函數(shù),即數(shù)據(jù)載體接口類可與數(shù)據(jù)解析接口類對(duì)應(yīng)。根據(jù)面向?qū)ο笤O(shè)計(jì)的動(dòng)態(tài)綁定原理,在運(yùn)行時(shí),數(shù)據(jù)載體對(duì)象的網(wǎng)絡(luò)數(shù)據(jù)抓取函數(shù)的回調(diào)函數(shù)即為調(diào)用該數(shù)據(jù)載體對(duì)象的數(shù)據(jù)解析對(duì)象的接口函數(shù)。再根據(jù)開閉原理可知,開發(fā)人員在增加新的數(shù)據(jù)載體對(duì)象類型時(shí),可無(wú)需修改代碼,而僅添加相應(yīng)的解析代碼即可,從而提高了擴(kuò)展性。
[0057]例如,若需要添加與郵件對(duì)應(yīng)的數(shù)據(jù)載體對(duì)象,即郵件VO對(duì)象,則可通過(guò)繼承數(shù)據(jù)載體接口類定義郵件VO對(duì)象,并將其對(duì)應(yīng)的數(shù)據(jù)解析對(duì)象設(shè)置為新定義的郵件解析對(duì)象,該郵件解析對(duì)象同樣繼承自AbstractParser類,且開發(fā)人員根據(jù)郵件業(yè)務(wù)的解析邏輯實(shí)現(xiàn)了郵件解析對(duì)象的接口函數(shù)parse。在運(yùn)行時(shí),與郵件業(yè)務(wù)相關(guān)的控制層對(duì)象發(fā)起的數(shù)據(jù)提取請(qǐng)求則對(duì)應(yīng)該郵件VO對(duì)象,調(diào)用郵件VO對(duì)象的網(wǎng)絡(luò)數(shù)據(jù)抓取函數(shù)后即調(diào)用郵件解析對(duì)象的接口函數(shù)parse。郵件解析對(duì)象的接口函數(shù)根據(jù)開發(fā)人員定義的解析邏輯解析抓取到的數(shù)據(jù),并將其賦值給郵件VO對(duì)象。與前例相比,開發(fā)人員無(wú)需修改根據(jù)數(shù)據(jù)載體類型標(biāo)識(shí)進(jìn)行判斷的代碼,而僅需添加相應(yīng)解析即可,從而提高了系統(tǒng)擴(kuò)展性。
[0058]在一個(gè)實(shí)施例中,如圖3所示,一種基于MVC的數(shù)據(jù)提取裝置,包括請(qǐng)求獲取模塊102、數(shù)據(jù)載體對(duì)象獲取模塊104、數(shù)據(jù)抓取模塊106、數(shù)據(jù)封裝模塊108以及數(shù)據(jù)返回模塊110,其中:
[0059]請(qǐng)求獲取模塊102,用于獲取控制層對(duì)象的數(shù)據(jù)提取請(qǐng)求。
[0060]數(shù)據(jù)載體對(duì)象獲取模塊104,用于獲取所述數(shù)據(jù)提取請(qǐng)求對(duì)應(yīng)的網(wǎng)絡(luò)地址參數(shù)和數(shù)據(jù)載體對(duì)象。
[0061]數(shù)據(jù)抓取模塊106,用于根據(jù)所述網(wǎng)絡(luò)地址參數(shù)通過(guò)調(diào)用所述數(shù)據(jù)載體對(duì)象的網(wǎng)絡(luò)數(shù)據(jù)抓取函數(shù)抓取網(wǎng)絡(luò)數(shù)據(jù)。
[0062]數(shù)據(jù)封裝模塊108,用于根據(jù)所述數(shù)據(jù)載體對(duì)象對(duì)抓取到的網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行解析,根據(jù)解析得到的數(shù)據(jù)對(duì)所述數(shù)據(jù)載體對(duì)象進(jìn)行賦值。
[0063]數(shù)據(jù)返回模塊110,用于將所述數(shù)據(jù)載體對(duì)象返回給與所述數(shù)據(jù)提取請(qǐng)求對(duì)應(yīng)的控制層對(duì)象。
[0064]在一個(gè)實(shí)施例中,數(shù)據(jù)封裝模塊108還用于獲取所述數(shù)據(jù)載體對(duì)象對(duì)應(yīng)的數(shù)據(jù)載體類型標(biāo)識(shí),根據(jù)所述數(shù)據(jù)載體類型標(biāo)識(shí)調(diào)用相應(yīng)的解析函數(shù)對(duì)所述抓取到的網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行解析。
[0065]在一個(gè)實(shí)施例中,數(shù)據(jù)載體對(duì)象繼承自同一數(shù)據(jù)載體接口類。
[0066]數(shù)據(jù)抓取模塊106還用于獲取所述數(shù)據(jù)載體接口類定義的網(wǎng)絡(luò)數(shù)據(jù)抓取函數(shù),將所述網(wǎng)絡(luò)地址參數(shù)作為函數(shù)參數(shù)傳遞給所述網(wǎng)絡(luò)數(shù)據(jù)抓取函數(shù),獲取返回的與所述網(wǎng)絡(luò)地址參數(shù)對(duì)應(yīng)的網(wǎng)絡(luò)數(shù)據(jù)。
[0067]在一個(gè)實(shí)施例中,數(shù)據(jù)封裝模塊108還用于獲取與所述數(shù)據(jù)載體對(duì)象對(duì)應(yīng)的數(shù)據(jù)解析對(duì)象,所述數(shù)據(jù)解析對(duì)象繼承自同一數(shù)據(jù)解析接口類,根據(jù)所述抓取到的網(wǎng)絡(luò)數(shù)據(jù)調(diào)用所述數(shù)據(jù)解析對(duì)象的接口函數(shù)進(jìn)行解析。
[0068]在一個(gè)實(shí)施例中,數(shù)據(jù)載體對(duì)象獲取模塊104還用于在獲取不到網(wǎng)絡(luò)地址參數(shù)時(shí),獲取與所述數(shù)據(jù)提取請(qǐng)求對(duì)應(yīng)的持久化數(shù)據(jù),根據(jù)所述持久化數(shù)據(jù)生成與所述數(shù)據(jù)提取請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)載體對(duì)象并返回。
[0069]在一個(gè)實(shí)施例中,如圖4所示,基于MVC的數(shù)據(jù)提取裝置還包括數(shù)據(jù)存儲(chǔ)模塊112,用于根據(jù)賦值后的數(shù)據(jù)載體對(duì)象進(jìn)行存儲(chǔ)。
[0070]上述基于MVC的數(shù)據(jù)提取方法及裝置,由屬于模型層的數(shù)據(jù)載體對(duì)象抓取網(wǎng)絡(luò)數(shù)據(jù),并將抓取到的網(wǎng)絡(luò)數(shù)據(jù)通過(guò)回調(diào)函數(shù)解析后設(shè)置為數(shù)據(jù)載體對(duì)象的類屬性并返回。對(duì)于控制層對(duì)象而言,數(shù)據(jù)載體對(duì)象的網(wǎng)絡(luò)數(shù)據(jù)抓取操作為透明狀態(tài),數(shù)據(jù)載體對(duì)象的類屬性值是由網(wǎng)絡(luò)數(shù)據(jù)抓取得到或是由模型層的存儲(chǔ)數(shù)據(jù)得到均不影響控制層對(duì)象的實(shí)現(xiàn),使得控制層對(duì)象和模型層對(duì)象的耦合度降低,從而提高了擴(kuò)展性。
[0071]本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過(guò)計(jì)算機(jī)程序來(lái)指令相關(guān)的硬件來(lái)完成,所述的程序可存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì)可為磁碟、光盤、只讀存儲(chǔ)記憶體(Read-Only Memory, ROM)或隨機(jī)存儲(chǔ)記憶體(Random Access
【權(quán)利要求】
1.一種基于MVC的數(shù)據(jù)提取方法,包括: 獲取控制層對(duì)象的數(shù)據(jù)提取請(qǐng)求; 獲取所述數(shù)據(jù)提取請(qǐng)求對(duì)應(yīng)的網(wǎng)絡(luò)地址參數(shù)和數(shù)據(jù)載體對(duì)象; 根據(jù)所述網(wǎng)絡(luò)地址參數(shù)通過(guò)調(diào)用所述數(shù)據(jù)載體對(duì)象的網(wǎng)絡(luò)數(shù)據(jù)抓取函數(shù)抓取網(wǎng)絡(luò)數(shù)據(jù); 根據(jù)所述數(shù)據(jù)載體對(duì)象對(duì)抓取到的網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行解析,根據(jù)解析得到的數(shù)據(jù)對(duì)所述數(shù)據(jù)載體對(duì)象進(jìn)行賦值; 將所述數(shù)據(jù)載體對(duì)象返回給與所述數(shù)據(jù)提取請(qǐng)求對(duì)應(yīng)的控制層對(duì)象。
2.根據(jù)權(quán)利要求1所述的基于MVC的數(shù)據(jù)提取方法,其特征在于,所述根據(jù)所述數(shù)據(jù)載體對(duì)象對(duì)抓取到的網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行解析的步驟包括: 獲取所述數(shù)據(jù)載體對(duì)象對(duì)應(yīng)的數(shù)據(jù)載體類型標(biāo)識(shí)。 根據(jù)所述數(shù)據(jù)載體類型標(biāo)識(shí)調(diào)用相應(yīng)的解析函數(shù)對(duì)所述抓取到的網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行解析。
3.根據(jù)權(quán)利要求1所述的基于MVC的數(shù)據(jù)提取方法,其特征在于,所述數(shù)據(jù)載體對(duì)象繼承自同一數(shù)據(jù)載體接口類; 所述根據(jù)所述網(wǎng)絡(luò)地址參數(shù)通過(guò)調(diào)用所述數(shù)據(jù)載體對(duì)象的網(wǎng)絡(luò)數(shù)據(jù)抓取函數(shù)抓取網(wǎng)絡(luò)數(shù)據(jù)的步驟包括: 獲取所述數(shù)據(jù)載體接口類定義的網(wǎng)絡(luò)數(shù)據(jù)抓取函數(shù); 將所述網(wǎng)絡(luò)地址參數(shù)作為函數(shù)參數(shù)傳遞給所述網(wǎng)絡(luò)數(shù)據(jù)抓取函數(shù),獲取返回的與所述網(wǎng)絡(luò)地址參數(shù)對(duì)應(yīng)的網(wǎng)絡(luò)數(shù)據(jù)。
4.根據(jù)權(quán)利要求1或3所述的基于MVC的數(shù)據(jù)提取方法,其特征在于,所述根據(jù)所述數(shù)據(jù)載體對(duì)象對(duì)抓取到的網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行解析的步驟包括: 獲取與所述數(shù)據(jù)載體對(duì)象對(duì)應(yīng)的數(shù)據(jù)解析對(duì)象,所述數(shù)據(jù)解析對(duì)象繼承自同一數(shù)據(jù)解析接口類; 根據(jù)所述抓取到的網(wǎng)絡(luò)數(shù)據(jù)調(diào)用所述數(shù)據(jù)解析對(duì)象的接口函數(shù)進(jìn)行解析。
5.根據(jù)權(quán)利要求1所述的基于MVC的數(shù)據(jù)提取方法,其特征在于,所述獲取所述數(shù)據(jù)提取請(qǐng)求對(duì)應(yīng)的網(wǎng)絡(luò)地址參數(shù)和數(shù)據(jù)載體對(duì)象的步驟之后還包括: 若獲取不到網(wǎng)絡(luò)地址參數(shù),則獲取與所述數(shù)據(jù)提取請(qǐng)求對(duì)應(yīng)的持久化數(shù)據(jù),根據(jù)所述持久化數(shù)據(jù)生成與所述數(shù)據(jù)提取請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)載體對(duì)象并返回。
6.根據(jù)權(quán)利要求1所述的基于MVC的數(shù)據(jù)提取方法,其特征在于,所述根據(jù)解析得到的數(shù)據(jù)對(duì)所述數(shù)據(jù)載體對(duì)象進(jìn)行賦值的步驟之后還包括: 根據(jù)所述賦值后的數(shù)據(jù)載體對(duì)象進(jìn)行存儲(chǔ)。
7.一種基于MVC的數(shù)據(jù)提取裝置,其特征在于,包括: 請(qǐng)求獲取模塊,用于獲取控制層對(duì)象的數(shù)據(jù)提取請(qǐng)求; 數(shù)據(jù)載體對(duì)象獲取模塊,用于獲取所述數(shù)據(jù)提取請(qǐng)求對(duì)應(yīng)的網(wǎng)絡(luò)地址參數(shù)和數(shù)據(jù)載體對(duì)象; 數(shù)據(jù)抓取模塊,用于根據(jù)所述網(wǎng)絡(luò)地址參數(shù)通過(guò)調(diào)用所述數(shù)據(jù)載體對(duì)象的網(wǎng)絡(luò)數(shù)據(jù)抓取函數(shù)抓取網(wǎng)絡(luò)數(shù)據(jù); 數(shù)據(jù)封裝模塊,用于根據(jù)所述數(shù)據(jù)載體對(duì)象對(duì)抓取到的網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行解析,根據(jù)解析得到的數(shù)據(jù)對(duì)所述數(shù)據(jù)載體對(duì)象進(jìn)行賦值; 數(shù)據(jù)返回模塊,用于將所述數(shù)據(jù)載體對(duì)象返回給與所述數(shù)據(jù)提取請(qǐng)求對(duì)應(yīng)的控制層對(duì)象。
8.根據(jù)權(quán)利要求7所述的基于MVC的數(shù)據(jù)提取裝置,其特征在于,所述數(shù)據(jù)封裝模塊還用于獲取所述數(shù)據(jù)載體對(duì)象對(duì)應(yīng)的數(shù)據(jù)載體類型標(biāo)識(shí),根據(jù)所述數(shù)據(jù)載體類型標(biāo)識(shí)調(diào)用相應(yīng)的解析函數(shù)對(duì)所述抓取到的網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行解析。
9.根據(jù)權(quán)利要求7所述的基于MVC的數(shù)據(jù)提取裝置,其特征在于,所述數(shù)據(jù)載體對(duì)象繼承自同一數(shù)據(jù)載體接口類; 所述數(shù)據(jù)抓取模塊還用于獲取所述數(shù)據(jù)載體接口類定義的網(wǎng)絡(luò)數(shù)據(jù)抓取函數(shù),將所述網(wǎng)絡(luò)地址參數(shù)作為函數(shù)參數(shù)傳遞給所述網(wǎng)絡(luò)數(shù)據(jù)抓取函數(shù),獲取返回的與所述網(wǎng)絡(luò)地址參數(shù)對(duì)應(yīng)的網(wǎng)絡(luò)數(shù)據(jù)。
10.根據(jù)權(quán)利要求7或9所述的基于MVC的數(shù)據(jù)提取裝置,其特征在于,所述數(shù)據(jù)封裝模塊還用于獲取與所述數(shù)據(jù)載體對(duì)象對(duì)應(yīng)的數(shù)據(jù)解析對(duì)象,所述數(shù)據(jù)解析對(duì)象繼承自同一數(shù)據(jù)解析接口類,根據(jù)所述抓取到的網(wǎng)絡(luò)數(shù)據(jù)調(diào)用所述數(shù)據(jù)解析對(duì)象的接口函數(shù)進(jìn)行解析。
11.根據(jù)權(quán)利要求7所述的基于MVC的數(shù)據(jù)提取裝置,其特征在于,所述數(shù)據(jù)載體對(duì)象獲取模塊還用于在獲取不到網(wǎng)絡(luò)地址參數(shù)時(shí),獲取與所述數(shù)據(jù)提取請(qǐng)求對(duì)應(yīng)的持久化數(shù)據(jù),根據(jù)所述持久化數(shù)據(jù)生成與所述數(shù)據(jù)提取請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)載體對(duì)象并返回。
12.根據(jù)權(quán)利要求7所述的基于MVC的數(shù)據(jù)提取裝置,其特征在于,所述裝置還包括數(shù)據(jù)存儲(chǔ)模塊,用于根據(jù)所述賦值后的數(shù)據(jù)載體對(duì)象進(jìn)行存儲(chǔ)。
【文檔編號(hào)】G06F9/44GK104281441SQ201310286905
【公開日】2015年1月14日 申請(qǐng)日期:2013年7月9日 優(yōu)先權(quán)日:2013年7月9日
【發(fā)明者】李 誠(chéng), 鄭暉, 楊振宇, 王湘勇 申請(qǐng)人:騰訊科技(深圳)有限公司