基于移動跨平臺的抽象控件模型實現(xiàn)方法
【專利摘要】本發(fā)明公開了一種基于移動跨平臺的抽象控件模型實現(xiàn)方法,包括,提供原生控件的Document和Element模型的抽象封裝,對抽象控件模型的訪問getter,通過Document訪問指定ID控件的時候,動態(tài)創(chuàng)建一個抽象控件,并將抽象控件加入抽象控件模型中,當(dāng)訪問該抽象控件屬性時,自動調(diào)用服務(wù)獲取指定原生控件的屬性值,并將調(diào)用的屬性值寫入抽象控件中,并返回該屬性值,從而得到抽象控件模型的屬性值;對抽象控件模型的操作setter,當(dāng)訪問到一個抽象控件模型對象后,設(shè)置抽象控件模型的屬性值;提供對原生控件類型的強類型封裝;提供抽象控件模型與原生控件之間的通訊交互。實現(xiàn)跨平臺編程,降低開發(fā)人員的移動開發(fā)門檻的優(yōu)點。
【專利說明】
基于移動跨平臺的抽象控件模型實現(xiàn)方法
技術(shù)領(lǐng)域
[0001 ]本發(fā)明涉及移動應(yīng)用開發(fā)領(lǐng)域,具體地,涉及一種基于移動跨平臺的抽象控件模型實現(xiàn)方法。
【背景技術(shù)】
[0002]移動開發(fā)領(lǐng)域中存在著不同的操作系統(tǒng)。軟件開發(fā)人員不得不需要在不同的移動操作系統(tǒng)和移動設(shè)備之間為了兼容而重復(fù)進(jìn)行開發(fā)。例如,在Apple環(huán)境下使用1S的應(yīng)用,而在Android平臺下使用Java又重復(fù)開發(fā)一遍,而這些應(yīng)用如果需要運行在Windows Phone環(huán)境下,則有需要使用C#和EVC再開發(fā)一遍。移動操作系統(tǒng)的數(shù)量決定了為兼容這些操作系統(tǒng)而進(jìn)行重復(fù)開發(fā)的工作量。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的目的在于,針對上述問題,提出一種基于移動跨平臺的抽象控件模型實現(xiàn)方法,以實現(xiàn)跨平臺編程,降低開發(fā)人員的移動開發(fā)門檻的優(yōu)點。
[0004]為實現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案是:
一種基于移動跨平臺的抽象控件模型實現(xiàn)方法,包括,
提供原生控件的Document和Element模型的抽象封裝,從而得到抽象控件模型;
對抽象控件模型的訪問getter,通過Document訪問指定ID控件的時候,動態(tài)創(chuàng)建一個抽象控件,并將抽象控件加入抽象控件模型中,當(dāng)訪問該抽象控件屬性時,自動調(diào)用服務(wù)獲取指定原生控件的屬性值,并將調(diào)用的屬性值寫入抽象控件中,并返回該屬性值,從而得到抽象控件模型的屬性值;
對抽象控件模型的操作setter,當(dāng)訪問到一個抽象控件模型對象后,設(shè)置抽象控件模型的屬性值;
提供對原生控件類型的強類型封裝,強類型控件有特定的專屬于自己的API,建立原生控件與抽象控件模型的鏈接,方便操作原生控件;
提供抽象控件模型與原生控件之間的通訊交互,即將Document作為一份控件元數(shù)據(jù)信息提交給原生控件的原生框架,原生框架通過解析這份控件元數(shù)據(jù)信息,更新相應(yīng)的控件,完成對原生控件的操作。
[0005]優(yōu)選的,上述當(dāng)訪問到一個抽象控件模型對象后,具體使用setAttribute方式設(shè)置抽象控件模型的屬性值。
[0006]優(yōu)選的,將原生控件的Document和Element模型進(jìn)行抽象封裝中,通過Document能夠訪問所有抽象控件模型內(nèi)的控件,實現(xiàn)動態(tài)創(chuàng)建或刪除控件。
[0007]優(yōu)選的,所述提供對原生控件類型的強類型封裝中,具體將Element轉(zhuǎn)成強類型控件。
[0008]本發(fā)明的技術(shù)方案具有以下有益效果:
本發(fā)明為了能實現(xiàn)跨平臺,開發(fā)一套能屏蔽具體的移動平臺的統(tǒng)一的、抽象的控件模型??梢酝耆帘尾煌苿悠脚_帶來的開發(fā)的差異性,實現(xiàn)跨平臺編程,降低開發(fā)人員的移動開發(fā)門檻。
[0009]下面通過附圖和實施例,對本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。
【附圖說明】
[0010]圖1為本發(fā)明實施例所述的于移動跨平臺的抽象控件模型實現(xiàn)方法的流程圖。
【具體實施方式】
[0011]以下結(jié)合附圖對本發(fā)明的優(yōu)選實施例進(jìn)行說明,應(yīng)當(dāng)理解,此處所描述的優(yōu)選實施例僅用于說明和解釋本發(fā)明,并不用于限定本發(fā)明。
[0012]—種基于移動跨平臺的抽象控件模型實現(xiàn)方法,包括,
將原生控件的Document和Element模型進(jìn)行抽象封裝,從而得到抽象控件模型;
對抽象控件模型的訪問getter,通過Document訪問指定ID控件的時候,動態(tài)創(chuàng)建一個抽象控件,并將抽象控件加入抽象控件模型中,當(dāng)訪問該抽象控件屬性時,自動調(diào)用服務(wù)獲取指定原生控件的屬性值,并將調(diào)用的屬性值寫入抽象控件中,并返回該屬性值,從而得到抽象控件模型的屬性值;
對抽象控件模型的操作setter,當(dāng)訪問到一個抽象控件模型對象后,設(shè)置抽象控件模型的屬性值;
提供對原生控件類型的強類型封裝,強類型控件有特定的專屬于自己的API,建立原生控件與抽象控件模型的鏈接,方便操作原生控件;
提供抽象控件模型與原生控件之間的通訊交互,即將Document作為一份控件元數(shù)據(jù)信息提交給原生控件的原生框架,原生框架通過解析這份控件元數(shù)據(jù)信息,更新相應(yīng)的控件,完成對原生控件的操作。
[0013]優(yōu)選的,上述當(dāng)訪問到一個抽象控件模型對象后,具體使用setAttribute方式設(shè)置抽象控件模型的屬性值。
[0014]優(yōu)選的,將原生控件的Document和Element模型進(jìn)行抽象封裝中,通過Document能夠訪問所有抽象控件模型內(nèi)的控件,實現(xiàn)動態(tài)創(chuàng)建或刪除控件。
[0015]優(yōu)選的,所述提供對原生控件類型的強類型封裝中,具體將Element轉(zhuǎn)成強類型控件。
[0016]在傳統(tǒng)的開發(fā)中,針對不同的運行平臺,要開發(fā)出不同的應(yīng)用,即需要編寫能使用運行其上的代碼。例如:開發(fā)一個能運行在1S之上的移動應(yīng)用,通常就需要開發(fā)人員使用Object-C語言來進(jìn)行編碼開發(fā),相應(yīng)的需要在Android操作系統(tǒng)之上的移動應(yīng)用就需要開發(fā)人員使用Java語言按照Android開發(fā)方式進(jìn)行開發(fā),同理,運行平臺的差異化越大,開發(fā)一款應(yīng)用軟件就需要用不同的編程語言和開發(fā)平臺來進(jìn)行開發(fā),這無疑增加了開發(fā)人員和開發(fā)團(tuán)隊的負(fù)擔(dān)。
[0017]通過抽象控件模型,只需要針對這一套統(tǒng)一的、與平臺無關(guān)的控件模型就可以實現(xiàn)一次編碼而支持在不同運行平臺之上運行,無疑會給應(yīng)用開發(fā)人員帶來更高的開發(fā)效率。
[0018]實現(xiàn)一套抽象控件模型需要有對原生控件的訪問和獲取方式、與原生控件之間的元數(shù)據(jù)通訊。如圖1所示,具體包括如下:
1、提供對原生控件的Document和EIement模型的抽象封裝,提供DOM編程模型。通過Document可以訪問所有抽象控件樹內(nèi)的控件,可以實現(xiàn)動態(tài)創(chuàng)建、刪除控件。
[0019]2、對抽象控件模型的訪問getter。在通過Document訪問指定ID的控件的時候,會動態(tài)創(chuàng)建一個抽象控件,并加入抽象Document模型中。當(dāng)訪問該控件屬性時,會自動調(diào)用服務(wù)獲取指定原生控件的屬性值寫入抽象控件模型中,并返回該屬性值。對于開發(fā)者而言,就像是通過Element訪問屬性一樣。
[0020]3、對抽象控件模型的操作setter。訪問到一個抽象控件模型對象后,可以使用setAttribute方式設(shè)置抽象控件模型的屬性值。
[0021]4、提供對原生控件類型的強類型封裝。提供強類型控件編程模型,可以將Element對象轉(zhuǎn)成強類型控件。每一種強類型控件都有特定的專屬于自己的API,可以方便的操作控件。
[0022]5、提供抽象控件模型與原生控件之間的通訊交互。當(dāng)業(yè)務(wù)邏輯代碼運行完畢后,MVC框架會將Document作為一份控件元數(shù)據(jù)信息提交給原生框架,原生框架通過解析這份元數(shù)據(jù)信息,更新相應(yīng)的控件,完成對原生控件的操作。
[0023]綜上所述,本發(fā)明具有以下特點:
使用JavaScript語言,使得更多的具有Web開發(fā)經(jīng)驗的開發(fā)人員能夠在最短的時間內(nèi)通過我們提供的開發(fā)平臺和開發(fā)方式,真正實現(xiàn)編寫一次代碼,就可以在不同的平臺上運行的夢想。
[0024](I)學(xué)習(xí)成本低。平臺提供了生成原生代碼的能力,屏蔽了開發(fā)人員的學(xué)習(xí)不同移動平臺開發(fā)語言的成本,并且提供了基于JavaScript的面向?qū)ο?、命名空間等主流高級語言特性,使得熟悉這些高級語言的開發(fā)人員能有效的過渡到移動開發(fā)領(lǐng)域。
[0025](2)開發(fā)成本低。Web程序員通過抽象控件DOM編程可以很快的編寫出移動應(yīng)用。
[0026](3)跨平臺。只要通過抽象控件編程模型編寫一次代碼即可,不同的移動平臺下都可以運行。
[0027]最后應(yīng)說明的是:以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,盡管參照前述實施例對本發(fā)明進(jìn)行了詳細(xì)的說明,對于本領(lǐng)域的技術(shù)人員來說,其依然可以對前述各實施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【主權(quán)項】
1.一種基于移動跨平臺的抽象控件模型實現(xiàn)方法,其特征在于,包括, 提供原生控件的Document和Element模型的抽象封裝,從而得到抽象控件模型; 對抽象控件模型的訪問getter,通過Document訪問指定ID控件的時候,動態(tài)創(chuàng)建一個抽象控件,并將抽象控件加入抽象控件模型中,當(dāng)訪問該抽象控件屬性時,自動調(diào)用服務(wù)獲取指定原生控件的屬性值,并將調(diào)用的屬性值寫入抽象控件中,并返回該屬性值,從而得到抽象控件模型的屬性值; 對抽象控件模型的操作setter,當(dāng)訪問到一個抽象控件模型對象后,設(shè)置抽象控件模型的屬性值; 提供對原生控件類型的強類型封裝,強類型控件有特定的專屬于自己的API,建立原生控件與抽象控件模型的鏈接,方便操作原生控件; 提供抽象控件模型與原生控件之間的通訊交互,即將Document作為一份控件元數(shù)據(jù)信息提交給原生控件的原生框架,原生框架通過解析這份控件元數(shù)據(jù)信息,更新相應(yīng)的控件,完成對原生控件的操作。2.根據(jù)權(quán)利要求1所述的基于移動跨平臺的抽象控件模型實現(xiàn)方法,其特征在于,上述當(dāng)訪問到一個抽象控件模型對象后,具體使用setAttribute方式設(shè)置抽象控件模型的屬性值。3.根據(jù)權(quán)利要求1或2所述的基于移動跨平臺的抽象控件模型實現(xiàn)方法,其特征在于,將原生控件的Document和Element模型進(jìn)行抽象封裝中,通過Document能夠訪問所有抽象控件模型內(nèi)的控件,實現(xiàn)動態(tài)創(chuàng)建或刪除控件。4.根據(jù)權(quán)利要求1或2所述的基于移動跨平臺的抽象控件模型實現(xiàn)方法,其特征在于,所述提供對原生控件類型的強類型封裝中,具體將Element轉(zhuǎn)成強類型控件。
【文檔編號】G06F9/44GK106095420SQ201610385813
【公開日】2016年11月9日
【申請日】2016年6月3日 公開號201610385813.6, CN 106095420 A, CN 106095420A, CN 201610385813, CN-A-106095420, CN106095420 A, CN106095420A, CN201610385813, CN201610385813.6
【發(fā)明人】勾成圖, 張建新
【申請人】用友網(wǎng)絡(luò)科技股份有限公司