抽象控件模型编程装置和方法

文档序号:6635216阅读:136来源:国知局
抽象控件模型编程装置和方法
【专利摘要】本发明提供了一种抽象控件模型编程装置,包括:抽象封装单元,用于利用抽象控件模型对原生控件的抽象封装,进行抽象控件编程;数据通讯单元,用于抽象控件编程结束后,进行抽象控件与原生控件之间的数据通讯。本发明还提供了一种抽象控件模型编程方法。通过本发明的技术方案,可以在现有的模型编程方式基础上,充分利用常规对象类型完成抽象对象类型的模型编程,建立多对象类型参与的面向抽象控件模型编程模的通用、统一编程思路。
【专利说明】抽象控件模型编程装置和方法

【技术领域】
[0001]本发明涉及计算机【技术领域】,具体地,涉及一种抽象控件模型编程装置和一种抽象控件模型编程方法。
[0002]

【背景技术】
[0003]移动开发领域中存在着不同的操作系统。软件开发人员不得不需要在不同的移动操作系统和移动设备之间为了兼容而重复进行开发。在传统的开发中,针对不同的运行平台,要使用不同的语言和开发工具来开发出不同的应用。例如:开发一个能运行在103之上的移动应用,通常就需要开发人员使用(?知语言来进行编码开发,相应的需要在八!1(601(1操作系统之上的移动应用就需要开发人员使用拓妨语言按照如^01(1开发方式进行开发。运行平台的差异化越大,开发一款运行于多个平台之上的应用软件的成本就越高。
[0004]在移动开发中,对控件的编程是最常见、最基本的编程方式。然而每一个移动平台给开发者提供了各式各样的控件,开发者为了能开发出运行在不同移动平台上的仙?,就需要学习使用各种控件体系,并且各个平台控件仙I也不尽相同。如果能有一套标准的控件模型,通过这一套控件模型即可实现跨平台编程的夙愿将是一件极其有意义的事情。
[0005]自互联网诞生以来,以为代表的“3技术经过多年的锤炼与洗礼似乎已经变得深入人心,近几年肌115的崛起,大有一统天下之势。使用111115开发出来的应用可以在108^811(11-01(1^13180^1361-1-7等各大手机平台上运行,具有跨平台的优势。然而肌115在诸如性能、流畅、用户体验等方面也有不尽人意的地方,与原生应用有着天然的差距。
[0006]因此,需要一种新的模型编程技术,可以在现有的模型编程方式基础上,充分利用常规对象类型完成抽象对象类型的模型编程,建立多对象类型参与的面向抽象控件模型编程模的通用、统一编程思路。
[0007]


【发明内容】

[0008]本发明正是基于上述问题,提出了一种新的模型编程技术,可以在现有的模型编程方式基础上,充分利用常规对象类型完成抽象对象类型的模型编程,建立多对象类型参与的面向抽象控件模型编程模的通用、统一编程思路。
[0009]有鉴于此,本发明提出了一种抽象控件模型编程装置,包括:抽象封装单元,用于利用抽象控件模型对原生控件的抽象封装,进行抽象控件编程;数据通讯单元,用于抽象控件编程结束后,进行抽象控件与原生控件之间的数据通讯。在该技术方案中,可以通过抽象控制编程,方便地访问操作原生控件,屏蔽不同移动平台的差异化,实现跨平台开发。
[0010]在上述技术方案中,优选地,所述抽象封装单元,具体包括:文档对象模型(001)抽象控件与编程方式的演化模块,用于将一个原生页面看作是一个肌祖^
1^1^-1113匕叩皿阴,是一种制作万维网页面的标准语言)页面,将原生页面内每一个原生控件抽象成一个元素(£1606111:)对象;在](^8801-11)1:是属于网络的脚本语言)中通过文档((100111116111:)对象(每个载入浏览器的文档都会成为00(3111116111:对象)使用001对象的方式实现对!1111中每一个控件的访问与操作;抽象控件模型生成模块,用于将原生控件用肌见来定义,并使用了语言中的了30~013^601:
^0^1011,是一种轻量级的数据交换格式)对象来描述这个肌祖^对应的001对象;抽象控件模型编程及应用程序编程接口(八卯11(^1:1011 ?1~0取'咖1111118,八?I )模块,用于借鉴肌见001的编程方式,提供对象和同名八?I,完成抽象控件编程;抽象控件编程完成后,基于肌见001编程,使用八?I对抽象控件进行读取、访问、操作。在该技术方案中,可以通过该控件模型提供的!II见001八?I及编程方式,通过该抽象控件模型提供的八?I来屏蔽不同移动平台带来的开发的差异性,轻松实现跨平台编程,降低开发人员的学习成本,从而降低跨平台移动开发门槛。
[0011]在上述技术方案中,优选地,所述抽象控件模型生成模块描述001对象的了30~
013^601: ^01^1:1011,是一种轻量级的数据交换格式),包含控件的唯一标识1(1、对应的肌祖^的丨叫标签、使用肌祖^元素的基本属性来表示原生控件的属性的』801!对象、一个抽象控件对象在控件树中的状态描述符和容器控件通过也11办611来描述其子控件信息的数组;和/或,所述抽象控件模型编程及仙I模块提供的丨如⑶腕社对象,是一个
1)00111116111:类型的单例对象,通过它能够访问到任何一个抽象控件。
[0012]在上述技术方案中,优选地,所述抽象封装单元进行抽象控件编程的操作之前,还包括:将肌祖^5和原生控件的瓜信息结合,提炼得到基于拓讨的抽象控件模型。在该技术方案中,开发人员只需要使用了狀必⑶丨讨语言通过这套抽象控件模型即可控制不同移动平台上的原生控件,既能发挥原生仙?【应用程序(外语缩写:八卯、外语全称:八卯在用户界面(1)861方面的天然优势,又可以使用语言来解决跨平台编程的问题。
[0013]在上述技术方案中,优选地,所述数据通讯单元,具体包括:原生调用模块,用于当抽象控件编程结束后,通过了3 (是属于网络的脚本语言)端执行一个方法后发起一个原生调用,将抽象控件对应的了30~数据提供给原生端主线程;原生控件的操作与更新模块,用于原生端主线程接受到这份了30~数据后,根据几数据中的每一个抽象控件的描述信息,执行更新原生瓜控件的代码,从而完成对原生控件的操作与更新。在该技术方案中,采用肌祖^技术中的拓语言和文档对象模型(001)的特点,提出一套基于001编程风格的抽象控件模型。开发人员只需使用了狀必⑶丨!)!:针对这套抽象控件模型一次编码,就能支持在不同运行平台之上运行。
[0014]根据本发明的又一个方面,还提出了一种抽象控件模型编程方法,包括:步骤202:利用抽象控件模型对原生控件的抽象封装,进行抽象控件编程;步骤204:抽象控件编程结束后,进行抽象控件与原生控件之间的数据通讯。在该技术方案中,可以通过抽象控制编程,方便地访问操作原生控件,屏蔽不同移动平台的差异化,实现跨平台开发。
[0015]在上述技术方案中,优选地,所述步骤202,具体包括:步骤302:将一个原生页面看作是一个页面,将原生页面内每一个原生控件抽象成一个对象;在1^8801-11)1:中通过(10(3111116111:对象使用001对象的方式实现对中每一个控件的访问与操作;步骤304:将原生控件用肌见来定义,并使用拓的语言中的了30^对象来描述这个肌见对应的001对象;步骤306:借鉴肌见001的编程方式,提供对象和同名八?I,完成抽象控件编程;抽象控件编程完成后,基于肌见001编程,使用八?I对抽象控件进行读取、访问、操作。在该技术方案中,可以通过该控件模型提供的肌见001八?I及编程方式,通过该抽象控件模型提供的八?I来屏蔽不同移动平台带来的开发的差异性,轻松实现跨平台编程,降低开发人员的学习成本,从而降低跨平台移动开发门槛。
[0016]在上述技术方案中,优选地,所述步骤304描述001对象的了30~,包含控件的唯一标识1(1、对应的!1111^的标签、使用肌祖^元素的基本属性来表示原生控件的属性的』8011对象、一个抽象控件对象在控件树中的状态描述符和容器控件通过来描述其子控件信息的数组;和/或,所述步骤306提供的$(100111116111:对象,是一个00(3111116111:类型的单例对象,通过它能够访问到任何一个抽象控件。
[0017]在上述技术方案中,优选地,所述步骤102进行抽象控件编程的操作之前,还包括:将肌祖^5和原生控件的VI信息结合,提炼得到基于拓讨的抽象控件模型。在该技术方案中,开发人员只需要使用了狀必⑶丨的语言通过这套抽象控件模型即可控制不同移动平台上的原生控件,既能发挥原生仙?在口I方面的天然优势,又可以使用了狀必⑶1讨语言来解决跨平台编程的问题。
[0018]在上述技术方案中,优选地,所述步骤104,具体包括:步骤402:当抽象控件编程结束后,通过了3端执行一个方法后发起一个原生调用,将抽象控件对应的几数据提供给原生端主线程;步骤404:原生端主线程接受到这份几数据后,根据了30^数据中的每一个抽象控件的描述信息,执行更新原生VI控件的代码,从而完成对原生控件的操作与更新。在该技术方案中,采用肌祖^技术中的拓语言和文档对象模型(001)的特点,提出一套基于001编程风格的抽象控件模型。开发人员只需使用了狀必⑶丨讨针对这套抽象控件模型一次编码,就能支持在不同运行平台之上运行。
[0019]通过以上技术方案,可以在现有的模型编程方式基础上,充分利用常规对象类型完成抽象对象类型的模型编程,建立多对象类型参与的面向抽象控件模型编程模的通用、统一编程思路。
[0020]

【专利附图】

【附图说明】
[0021]图1示出了根据本发明的实施例的抽象控件模型编程装置的框图;
图2示出了根据本发明的实施例的抽象控件模型编程方法的流程图;
图3示出了根据本发明的实施例的抽象封装单元的流程图;
图4示出了根据本发明的实施例的数据通讯单元的流程图;
图5示出了根据本发明的实施例的001抽象控件与编程方式的演化的原理图。
[0022]图6示出了根据本发明的实施例的001抽象控件与编程方式的演化的流程图。
[0023]图7示出了根据本发明的实施例的抽象控件模型的抽象过程的流程图。
[0024]图8示出了根据本发明的实施例的获取一个抽象控件指定属性的流程图。
[0025]图9示出了根据本发明的实施例的设置一个抽象控件指定属性的流程图。
[0026]图10和图11分别示出了根据本发明的实施例的2161116111:对象有861:八1:1:1*113111:6和此6两个常用的方法的流程图; 图12示出了根据本发明的实施例的抽象控件模型与原生控件之间的数据通讯的流程图。
[0027]

【具体实施方式】
[0028]为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和【具体实施方式】对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
[0029]在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
[0030]图1示出了根据本发明的实施例的抽象控件模型编程装置的框图。
[0031]如图1所示,根据本发明的实施例的抽象控件模型编程装置100,包括:抽象封装单元102,用于利用抽象控件模型对原生控件的抽象封装,进行抽象控件编程;数据通讯单元104,用于抽象控件编程结束后,进行抽象控件与原生控件之间的数据通讯。在该技术方案中,可以通过抽象控制编程,方便地访问操作原生控件,屏蔽不同移动平台的差异化,实现跨平台开发。
[0032]在上述技术方案中,优选地,抽象封装单元102,具体包括:001抽象控件与编程方式的演化模块1022,用于将一个原生页面看作是一个页面,将原生页面内每一个原生控件抽象成一个£161116111:对象;在中通过(100111116111:对象使用001对象的方式实现对!1111中每一个控件的访问与操作;抽象控件模型生成模块1024,用于将原生控件用
来定义,并使用了狀狀⑶丨的语言中的了30^对象来描述这个肌祖^对应的001对象;抽象控件模型编程及仙I模块1026,用于借鉴肌见001的编程方式,提供对象和同名八?I,完成抽象控件编程;抽象控件编程完成后,基于肌见001编程,使用八?I对抽象控件进行读取、访问、操作。在该技术方案中,可以通过该控件模型提供的肌见001八?I及编程方式,通过该抽象控件模型提供的八?I来屏蔽不同移动平台带来的开发的差异性,轻松实现跨平台编程,降低开发人员的学习成本,从而降低跨平台移动开发门槛。
[0033]在上述技术方案中,优选地,抽象控件模型生成模块1024描述001对象的了30化包含控件的唯一标识1(1、对应的的标签、使用元素的基本属性来表示原生控件的属性的扣011对象、一个抽象控件对象在控件树中的状态描述符和容器控件通过01111(11-611来描述其子控件信息的数组;和/或,抽象控件模型编程及八?I模块1026提供的$(100111116111:对象,是一个00(3111116111:类型的单例对象,通过它能够访问到任何一个抽象控件。
[0034]在上述技术方案中,优选地,抽象封装单元102进行抽象控件编程的操作之前,还包括:将肌祖^5和原生控件的瓜信息结合,提炼得到基于拓讨的抽象控件模型。在该技术方案中,开发人员只需要使用了狀必⑶丨讨语言通过这套抽象控件模型即可控制不同移动平台上的原生控件,既能发挥原生仙?在VI方面的天然优势,又可以使用1^8801-11)1:语言来解决跨平台编程的问题。
[0035]在上述技术方案中,优选地,数据通讯单元104,具体包括:原生调用模块1042,用于当抽象控件编程结束后,通过了3端执行一个方法后发起一个原生调用,将抽象控件对应的了30~数据提供给原生端主线程;原生控件的操作与更新模块1044,用于原生端主线程接受到这份了30~数据后,根据了30^数据中的每一个抽象控件的描述信息,执行更新原生VI控件的代码,从而完成对原生控件的操作与更新。在该技术方案中,采用11111技术中的拓语言和文档对象模型(001)的特点,提出一套基于001编程风格的抽象控件模型。开发人员只需使用了狀必⑶丨的针对这套抽象控件模型一次编码,就能支持在不同运行平台之上运行。
[0036]图2示出了根据本发明的实施例的抽象控件模型编程方法的流程图。
[0037]如图2所示,根据本发明的实施例的抽象控件模型编程方法,包括:步骤202:利用抽象控件模型对原生控件的抽象封装,进行抽象控件编程;步骤204:抽象控件编程结束后,进行抽象控件与原生控件之间的数据通讯。在该技术方案中,可以通过抽象控制编程,方便地访问操作原生控件,屏蔽不同移动平台的差异化,实现跨平台开发。
[0038]在上述技术方案中,优选地,如图3所示,步骤202,具体包括:步骤302:将一个原生页面看作是一个页面,将原生页面内每一个原生控件抽象成一个£1611161^对象;在1^8801-11)1:中通过(100111116111:对象使用001对象的方式实现对中每一个控件的访问与操作;步骤304:将原生控件用肌见来定义,并使用拓的语言中的了30^对象来描述这个肌见对应的001对象;步骤306:借鉴肌见001的编程方式,提供对象和同名八?I,完成抽象控件编程;抽象控件编程完成后,基于肌见001编程,使用八?I对抽象控件进行读取、访问、操作。在该技术方案中,可以通过该控件模型提供的肌见001八?I及编程方式,通过该抽象控件模型提供的八?I来屏蔽不同移动平台带来的开发的差异性,轻松实现跨平台编程,降低开发人员的学习成本,从而降低跨平台移动开发门槛。
[0039]在上述技术方案中,优选地,步骤304描述001对象的了301包含控件的唯一标识1(1、对应的肌祖^的仏8标签、使用肌祖^元素的基本属性来表示原生控件的属性的』8011对象、一个抽象控件对象在控件树中的状态描述符和容器控件通过也11办611来描述其子控件信息的数组;和/或,步骤306提供的$(100111116111:对象,是一个00(3111116111:类型的单例对象,通过它能够访问到任何一个抽象控件。
[0040]在上述技术方案中,优选地,步骤102进行抽象控件编程的操作之前,还包括:将^15和原生控件的VI信息结合,提炼得到基于拓讨的抽象控件模型。在该技术方案中,开发人员只需要使用了狀必⑶丨的语言通过这套抽象控件模型即可控制不同移动平台上的原生控件,既能发挥原生仙?在VI方面的天然优势,又可以使用了狀必⑶1讨语言来解决跨平台编程的问题。
[0041]在上述技术方案中,优选地,如图4所示,步骤104,具体包括:步骤402:当抽象控件编程结束后,通过几端执行一个方法后发起一个原生调用,将抽象控件对应的了30~数据提供给原生端主线程;步骤404:原生端主线程接受到这份了30~数据后,根据了30~数据中的每一个抽象控件的描述信息,执行更新原生瓜控件的代码,从而完成对原生控件的操作与更新。在该技术方案中,采用肌祖^技术中的拓语言和文档对象模型(001)的特点,提出一套基于001编程风格的抽象控件模型。开发人员只需使用了狀必⑶丨讨针对这套抽象控件模型一次编码,就能支持在不同运行平台之上运行。
[0042]本发明的技术方案,是基于移动跨平台的抽象控件模型技术解决方案。本发明的技术方案,涉及在移动开发领域中不同控件模型需要不同的开发语言的现状,提出一套统一的基于拓讨语言实现的抽象控件模型,通过该控件模型提供的!!1见001八?I及编程方式,可以方便地访问操作原生控件;从而屏蔽不同移动平台的差异化,从而实现跨平台开发。
[0043]为了能进行跨平台开发,还要保持原生控件的天然优势,我们将!和原生控件在III方面的优势结合起来,提炼出一套基于]的抽象控件模型,开发人员只需要使用了狀必⑶1讨语言通过这套抽象控件模型即可控制不同移动平台上的原生控件。这样既能发挥原生仙?在VI方面的天然优势,又可以使用了狀必⑶1讨语言来解决跨平台编程的问题。
[0044]本发明的技术方案,旨在为移动开发领域使用提供一套基于讨语言的抽象控件编程模型,通过该抽象控件模型提供的仙I来屏蔽不同移动平台带来的开发的差异性,轻松实现跨平台编程,降低开发人员的学习成本,从而降低跨平台移动开发门槛。
[0045]我们采用肌祖^技术中的拓^3(^1讨语言和文档对象模型(001)的特点,提出一套基于001编程风格的抽象控件模型。开发人员只需使用了狀必⑶丨的针对这套抽象控件模型一次编码,就能支持在不同运行平台之上运行,完全不必理会平台上控件编程的差异,轻轻松松实现梦寐以求的跨平台移动开发。
[0046]为了能实现上述目标,需要解决如下几件事情:
第一、使用语言来解决跨平台编程。
[0047]第二、使用抽象控件模型来实现跨平台控件编程。
[0048]第三、抽象控件如何对原生控件进行抽象。
[0049]第四、抽象控件如何原生控件之间的数据通讯。
[0050]不同的移动平台都各自的几引擎,例如安卓有乂8引擎,001-6引擎,加上移动平台提供的硏5^16界组件可以很好的实现原生语言与]之间的相互调用,所以选用了狀必⑶1讨语言就可以解决跨平台编程语言的问题。
[0051]我们使用拓^3(^1的语言中的了30^对象来描述一个抽象控件,所有对控件的编程转化为对了30^对象的编程,这样原本需要使用不同语言对通过不同八?I才能操作原生控件,而现在仅仅需要使用语言来对了30~操作即可。
[0052]接下来,我们重点阐述一下如何实现抽象控件模型对原生控件的抽象封装和抽象控件与原生控件之间的数据通讯:
1、001抽象控件与编程方式的演化
众所周知,在肌见中,通过001实现了对!1111的访问能力,并使开发者能将!!1见作为XII文档来处理和查看。在使用(10(3111116111:和肌11 2161116111:可以访问并控制肌见页面中的所有元素。
[0053]我们把这种思想引入到移动开发领域,我们可以将一个原生页面看作是一个肌11页面,那么该页面内每一个原生控件都可以抽象成一个2161116111:对象。在]中可以通过(10(3111116111:对象使用001对象的方式来实现对中每一个控件的访问与操作。我们使用中的了30^对象来定义这样一个001对象,并提供一个$(100111116111:对象,通过$(100111116111:也能像使用(100111116111: —样,对当前页面上所有抽象控件进行访问和操作。参见图5。
[0054]其演化过程参见图6。
[0055]2、抽象控件模型
我们结合肌见和001的思想,将原生控件(如或103控件)用肌见来定义,并使用了狀狀⑶丨讨语言中的了30^对象来描述这个肌见对应的001对象,该了30^包含如下内容:
1(1:控件的1(1,控件的唯一标示。
[0056]10.^:对应的!!1见的1:叫标签。
[0057]81:1:1-8: 一个』8011对象,使用!!111元素的基本属性来表示原生控件的属性。
[0058]81:81:118:用于描述一个抽象控件对象在控件树中的状态,有3(1(1、1110(11^16(1^己6161:6、111861~1: —#7^。
[0059]01111(11-611:是一个数组,一个容器控件通过来描述其子控件信息。
[0060]此时我们也可以把这个了 3(例对象看做是一个“控件”,只不过这个控件比较“特殊”,是一个对原生控件的抽象而已。
[0061]例如八11(11*01(1中编辑框控件£(111:丁6x1:,其文本为“8)3(3”的,用中1111)111:元素来定义为:
〈1111)111: 101二〃1:6叉1:130叉0〃 七7??6二〃七 6X1:〃 ^81116=^8)30^/^
我们用抽象控件描述为一个了狀必⑶丨的180^对象为:
I

〃1己〃:〃 1:6x1:130x0〃,

// , // //., //: 111口11 七,

// , , // // 1./-..1 //

5^8^115: 111001 士 160 ,
// , , // 「//.1 // //』 ,1 //, // // , , 1 // // 1 // // 1 //-]
&七七 1*8: 1 10: 1:6X^100X0 ,:七6又七00又,V&丄 116: 800 )

I
其抽象过程如图7所示。
[0062]随着控件抽象的演化,其对应的编程方式也由原生控件的编程转化为拓^3(^1的编程方式。
[0063]全局变量用来表示对整个抽象控件模型对象,其内部存储一个1^8801-11)1:的』8011对象,用于描述当前抽象控件树。初始时该了30^对象是一个空了308对象,随着代码中对指定的抽象控件进行访问操作时,$(100111116111:对象会动态的逐步的增加相应的控件描述。这也是为什么叫抽象控件的原因。因为刚开始的时候,对象中根本没有了30~控件。
[0064]$(100111116111:对象的 @61:2161116111:871(1 方法,返回一个 2161116111:对象。
[0065]2161116111:对象内部有一个』8011对象用于描述该抽象控件的所有信息,并提供86^1:1:1-113111:6和阴丨紅廿让此6方法用来设置或获取』8011对象的属性值,即抽象控件的属性值。
[0066]获取一个抽象控件指定属性的过程如图8所示。
[0067]设置一个抽象控件指定属性的过程如图9所示。
[0068]例如,初始时$(10(3111116111:内部的用于抽象控件了30^为一个空对象,即(},
当执行一段几代码后,该了30~对象变成

I

〃七61 七 130X0〃:(

"土己〃:"七 6X^130X0〃,

// , ////..”: 111口11 七,


// , , // // 1./-..1 //

5^8^115: 111001 士 160 ,

// , , // 「//.1 // //』 ,1 //, // // , , 1 // // 1 // // 1 //-]

&七七 1*8: 1 10: 1:6X^100X0 ,:七6又七00又,V&丄 116: 800 )
^011011811^6^: 〃七1^11^1 呂6〃


I
I
3、抽象控件模型编程及八?I
在抽象控件编程中,借鉴了肌见001的编程方式,提供了对象和同名八?I,
$(100111116111:对象是一个00(3111116111:类型的单例对象,通过它可以访问到任何一个抽象控件。
[0069]熟悉!III 001编程的开发者可以很容易理解并使用八?I对抽象控件进行读取、访问、操作。
[0070]$(10(3111116111:对象全局的唯一的 00(3111116111:类型的对象,使用 86從161116111:871 (1 方法可以返回一个2161116111:对象。
[0071]2161116111:对象有 861:八和 @61:八两个常用的方法。如图 10 和图11所示。
[0072]下面我们来讲解一下抽象控件编程的代码演示过程。
[0073]例如103中都有文本编辑框控件,我们采用抽象控件编程的方式来举例说明如何对定义一个文本框,以及对这个文本框进行取值赋值操作。
[0074]首先,一个文本框的采用定义如下:
〈1111)111: 101二〃1:6叉1:〃1:6叉1:130叉0〃 七5^16二〃1:6叉1:〃 乂已1116二〃123〃7?
此时该文本框控件对应的抽象控件模型可以描述为
^1:6x1:130x0〃:(

〃1己〃:〃 1:6x1:130x0〃,

// , // //., //: 111口11 七,

// , ,//「.//..1八 ////.////..1////-,//

&七七 1*8: 1 10: 1:6X^100X0 , 七7口6: 七6又七00又, V&丄 116:

I
此时我们需要把一个输入框抽象控件的值由“123”改变为“处一时,即对应的肌11为
〈1111)111: 101二〃1:6叉1:130叉0〃 七7??6二〃七 6X1:〃 ^81116=^8)30^/^
采用了3抽象控件编程代码如下:
妨!"吐0 =://根据 1(1 自动创建一个抽象控件对象并返回
1:130.861:^1:1:1-113111:6"处。").'丨丨设置该 2161116111:对象内部 ^80^ 对象中 8七1:1~8
的妨1116为字符串3。〃
的^£11116属性的值
此时了30~结构如下
(
"土己〃:"七 6X^130X0〃,

// , , ”” 1./-..1 //

5^8^115: 111001 士 160 ,

// , , ” 「// 1 // // 1 //-]

&七七 1*8: 1 V&丄 116: 800 )

I
第一句代码中的同肌见001编程的861:2161116111:871(1含义相同都是获取一个001对象,不同之处在于肌祖^中会根据参数1(1去001中查找到£16061^对象,而在抽象控件编程中是根本没有这个2161116111:对象的,也就是说一开始$(100111116111:对象是一个空对象0,当调用$(10111(3111116111:的86從161111:111:871(1方法时会在$(10(3111116111:中动态创建一个1(1为1:6X1:130X0的』8011对象用于描述该抽象控件,此时根本没有什么控件,而仅仅是一个』8011对象,该』8011对象也仅仅只有一个属性1(1,即1^1(1〃: 〃 1^6X1: 130^0^},并将该了30~对象加入到$(10(3111116111:对象中,以后对1:6X1:130X0的访问和操作都会从$(10(3111116111:中查找。
[0075]第二句代码中的861:八1:1:1*113111:6方法含义也同肌11 001编程中的861:八1:1:1*113111:6方法,!!111 001中是对£16061^对象指定属性赋值,而抽象编程中是对该抽象控件对象指定属性赋值,即对吐0这个抽象控件对应的了30~数据中的对象的^£11116属性赋值,此时该抽象控件对象了30~描述为
I

〃1己〃:〃 1:6x1:130x0〃,

// , , // // 1./-..1 //

5^8^115: 111001 士 160 ,

// , , // 「// 1 // // 1 //-]

&七七 1*8: 1 V&丄 116: 800 )

I
此时,在了30^描述中多了一个8仏加8属性,用于标注该抽象控件对象属性发生了改变。等所有抽象控件的的代码执行完毕后,原生端会根据这个8仏加8属性进行更新、删除、创建等操作。
[0076]第三句代码执行阴丨紅廿'让此一(〃妨匕一〃)用于获取该抽象控件的值,即返回该180^对象中的211:1:1*8下的妨1116属性的值。
[0077]以上代码开始是对抽象控件的赋值过程,还有一种情况就是,代码一开始没有对抽象控件赋值,而是对抽象控件取值。我们分析如下代码:
妨!"吐0 =://根据 1(1 自动创建一个抽象控件对象财1 = 1:)30.阴1:八(^£11116^, ) ;//先在 $(10(3111116111:没有该属性值,则通过服务调用原生控件的%1116属性的值 1^^1==^123^)
1:130.861:^1:1:1-113111:6 (^^81116^,;
在代码中并没有先调用861:八1:1:1~113111:6方法,而是先调用'让此6的时,即上述代码的第一句,由于此时$(10(3111116111:中的并没有真正的控件,所以执行到阴七紅廿'让此6方法时,需要隐式的在了3端发起一个同步调用请求,获取原生控件对应属性的属性值,获取原生控件属性值后,再动态的在中创建一个抽象控件,其对应点属性值则为刚刚获取的原生控件的属性值,而这个过程是抽象控件编程框架自动完成的,开发者无需关心具体实现,从代码的层面看就像$(10(3111116社中已经有这个抽象控件,并能返回指定属性值。
[0078]以上我们阐述了如何获取一个抽象控件,以及如何对该抽象控件进行属性访问与设置。
[0079]4、抽象控件模型与原生控件之间的数据通讯。
[0080]参见图12,当抽象控件编程结束后,通过几端执行一个方法后发起一个原生调用,将抽象控件对应的了30~数据提供给原生端主线程,原生端主线程接受到这份几数据后,根据了30~数据中的每一个抽象控件的描述信息,执行更新原生瓜控件的代码,从而完成对原生控件的操作与更新。
[0081]以了狀必⑶丨的与安卓为例,八11(11*01(1更新III必须是在主线程之上进行,所以在了3端通过抽象控件编程后,必须以了30~的形式提交至安卓VI主线程之后,有主线程进行VI更新。整个过程中,开发人员仅仅需要编写抽象控件的编程的拓^3(^1的代码即可。
[0082]推广到一般性上,对基于抽象控件编程的开发人员而言,18端与原生端之间的数据通讯,以及原生端如何解析了3端传递过来的几数据从而更新原生VI这些工作无需关心,只要关注如何进行抽象控件编程即可。
[0083]本发明的技术方案,至少可以达到的有益效果包括:
⑴从代码运行效率上看,更新瓜控件的操作,最终仍然是在原生端实现的,所以相对于跨平台方式而言,原生VI的效率、流畅性具有绝对优势。
[0084]⑵从编程语言上的看,由多套基于原生语言的编程转化为一套基于了的编程,实现了跨平台编程。
[0085]⑶从代码八?I的使用上,提供近似!II见001的编程八?I,极大降低了开发人员的学习成本,对于开发人员几乎没有任何障碍。
[0086]总之,使用拓^3(^1讨语言,采用抽象控件编程方式,可以能使得更多的开发人员,尤其是具有1613开发经验的开发人员能够在最短的时间内实现跨平台移动开发。
[0087]以上结合附图详细说明了本发明的技术方案,考虑到相关技术中没有简便的、统一的针对复杂类型控件编程的解决办法。现有的模型编程无法完成有复杂类型参与的模型编程过程。因此,本发明提出了一种抽象控件模型编程装置和一种抽象控件模型编程方法,可以在现有的模型编程方式基础上,充分利用常规对象类型完成抽象对象类型的模型编程,建立多对象类型参与的面向抽象控件模型编程模的通用、统一编程思路。
[0088]以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种抽象控件模型编程装置,其特征在于,包括: 抽象封装单元,用于利用抽象控件模型对原生控件的抽象封装,进行抽象控件编程; 数据通讯单元,用于抽象控件编程结束后,进行抽象控件与原生控件之间的数据通讯。
2.根据权利要求1所述的抽象控件模型编程装置,其特征在于,所述抽象封装单元,具体包括: DOM抽象控件与编程方式的演化模块,用于将一个原生页面看作是一个HTML页面,将原生页面内每一个原生控件抽象成一个Element对象;在JavaScript中通过document对象使用DOM对象的方式实现对HTML中每一个控件的访问与操作; 抽象控件模型生成模块,用于将原生控件用HTML来定义,并使用Javascript语言中的JSON对象来描述这个HTML对应的DOM对象; 抽象控件模型编程及API模块,用于借鉴HTML DOM的编程方式,提供$doCument对象和同名API,完成抽象控件编程;抽象控件编程完成后,基于HTML DOM编程,使用API对抽象控件进行读取、访问、操作。
3.根据权利要求2所述的抽象控件模型编程装置,其特征在于,所述抽象控件模型生成模块描述DOM对象的JS0N,包含控件的唯一标识id、对应的HTML的tag标签、使用HTML元素的基本属性来表示原生控件的属性的json对象、一个抽象控件对象在控件树中的状态描述符和容器控件通过children来描述其子控件信息的数组; 和/或, 所述抽象控件模型编程及API模块提供的$document对象,是一个Document类型的单例对象,通过它能够访问到任何一个抽象控件。
4.根据权利要求1-3中任一项所述的抽象控件模型编程装置,其特征在于,所述抽象封装单元进行抽象控件编程的操作之前,还包括:将HTML5和原生控件的UI信息结合,提炼得到基于JavaScript的抽象控件模型。
5.根据权利要求1-3中任一项所述的抽象控件模型编程装置,其特征在于,所述数据通讯单元,具体包括: 原生调用模块,用于当抽象控件编程结束后,通过JS端执行一个方法后发起一个原生调用,将抽象控件对应的JSON数据提供给原生端主线程; 原生控件的操作与更新模块,用于原生端主线程接受到这份JSON数据后,根据JSON数据中的每一个抽象控件的描述信息,执行更新原生Π控件的代码,从而完成对原生控件的操作与更新。
6.一种抽象控件模型编程方法,其特征在于,包括: 步骤202:利用抽象控件模型对原生控件的抽象封装,进行抽象控件编程; 步骤204:抽象控件编程结束后,进行抽象控件与原生控件之间的数据通讯。
7.根据权利要求6所述的抽象控件模型编程方法,其特征在于,所述步骤202,具体包括: 步骤302:将一个原生页面看作是一个HTML页面,将原生页面内每一个原生控件抽象成一个Element对象;在JavaScript中通过document对象使用DOM对象的方式实现对HTML中每一个控件的访问与操作; 步骤304:将原生控件用HTML来定义,并使用Javascript语言中的JSON对象来描述这个HTML对应的DOM对象; 步骤306:借鉴HTML DOM的编程方式,提供$document对象和同名API,完成抽象控件编程;抽象控件编程完成后,基于HTML DOM编程,使用API对抽象控件进行读取、访问、操作。
8.根据权利要求7所述的抽象控件模型编程方法,其特征在于,所述步骤304描述DOM对象的JS0N,包含控件的唯一标识id、对应的HTML的tag标签、使用HTML元素的基本属性来表示原生控件的属性的json对象、一个抽象控件对象在控件树中的状态描述符和容器控件通过children来描述其子控件信息的数组; 和/或, 所述步骤306提供的$document对象,是一个Document类型的单例对象,通过它能够访问到任何一个抽象控件。
9.根据权利要求6-8中任一项所述的抽象控件模型编程方法,其特征在于,所述步骤102进行抽象控件编程的操作之前,还包括:将HTML5和原生控件的UI信息结合,提炼得到基于JavaScript的抽象控件模型。
10.根据权利要求6-8中任一项所述的抽象控件模型编程方法,其特征在于,所述步骤.104,具体包括: 步骤402:当抽象控件编程结束后,通过JS端执行一个方法后发起一个原生调用,将抽象控件对应的JSON数据提供给原生端主线程; 步骤404:原生端主线程接受到这份JSON数据后,根据JSON数据中的每一个抽象控件的描述信息,执行更新原生Π控件的代码,从而完成对原生控件的操作与更新。
【文档编号】G06F9/44GK104407863SQ201410671291
【公开日】2015年3月11日 申请日期:2014年11月21日 优先权日:2014年11月21日
【发明者】勾成图, 张建新 申请人:用友软件股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1