掌桥专利:专业的专利平台
掌桥专利
首页

一种扩充的面向对象软件开发工具包的功能扩展方法

文献发布时间:2023-06-19 10:02:03


一种扩充的面向对象软件开发工具包的功能扩展方法

技术领域

本发明涉及软件开发领域,特别地,涉及一种扩充的面向对象软件开发工具包的功能扩展方法。

背景技术

软件开发工具包(SDK,Software Development Kit)一般是为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合,可以是简单地为某个程序设计语言提供应用程序接口的一些文件,也可以包括能与某种嵌入式系统通讯的复杂的硬件。一般的工具包括用于调试和其他用途的实用工具,还经常包括示例代码、支持性的技术注解或者其他的为基本参考资料澄清疑点的支持文档。

在应用Objective-C(扩充C的面向对象)语言的软件开发中,目前SDK扩展技术大多在于从大类功能层面上增加功能,也就是原SDK没有某一功能,通过扩展后可以增加该功能,这种从整体功能层面上的功能扩展,目前实现方式都是提供不同的SDK库。例如,终端具有通话功能,通过SDK扩展短信功能,则对应于有第一SDK库;当需要为前述终端的通话功能增强时,例如,扩展视频电话功能时,则对应有第二SDK库,这样,即便扩展的功能类似,所提供的SDK库也不尽相同,从而导致需要发布多个版本的SDK库,并且每个版本的SDK库固定不可修改。

现有Objective-C的软件开发中,SDK扩展过于死板。

发明内容

本发明提供了一种扩充的面向对象软件开发工具包的功能扩展方法,以提高SDK扩展的灵活性。

一种扩充的面向对象软件开发工具包的功能扩展方法,包括,

定义至少一个包括方法的类,

为所述类至少定义一个类别,定义该类别的方法与所述类的方法同名,且该类别的方法至少包括扩展功能的代码,

根据所需扩展功能,构建扩展功能对应的类别,并且,构建与该类别对应的类,以使得类的方法被调用时,所述类别的同名方法所包括的扩展功能代码被执行。

所述定义至少一个包括方法的类还包括,定义所述类的方法至少包括基本功能的代码,将所定义的类打包成第一库文件。

所述为所述类至少定义一个类别还包括,将所定义的类别打包成第二库文件。

所述根据所需扩展功能,构建扩展功能对应的类别,并且,构建该类别对应的类,包括,

根据所需扩展功能,引入扩展功能对应的第二库文件,并且,引入第一库文件,其中,第二库文件中的类别是为第一库文件中的类所定义的类别。

其中,所述定义至少一个包括方法的类还包括,所有的类分别打包成第一库文件,所述第一库文件的集合形成基本功能的第一软件开发工具包。

其中,所述为所述类至少定义一个类别还包括,所有的类别分别打包成第二库文件,所述第二库文件的集合形成扩展功能的第二软件开发工具包。

其中,该方法进一步包括,

根据功能需求确定引入的库文件,

如果仅需要基本功能,则从所述第一软件开发工具包中选择与该基本功能对应的第一库文件,

如果需要扩展功能,则从所述第二软件开发工具包中选择与所述扩展功能对应的第二库文件,其中,第二库文件中的类别是为第一库文件中的类所定义的类别,且该类别的方法与第一文件中的类的方法同名。

所述扩充的面向对象软件开发工具包为扩充C面向对象语言下的软件开发工具包。

本发明利用类别的装饰模式特性,为类至少定义一个类别,该类别所定义的方法与所述类的方法同名,该类别的方法至少包括扩展功能的代码,并根据所需扩展功能,基于必选类,选择性地引入扩展功能对应的类别,以使得类的方法被调用时,所述类别的同名方法所包括的扩展功能代码被执行,从而实现了动态扩展功能,使得扩展功能插件化。相对于现有技术,减少了SDK版本的数量,避免了扩展功能时对代码的修改,实现了多种功能的自由组合,方便的定制功能的实现。

附图说明

图1为类和类别都定义了同名方法的一种示意图;

图2为类定义一种示意图。

图3为本发明实施例实现SDK功能扩展的一种流程示意图。

图4为形成类C的库文件的一种示意图。

具体实施方式

为了使本申请的目的、技术手段和优点更加清楚明白,以下结合附图对本申请做进一步详细说明。

本发明利用Objective-C语言中类别(category)特性,将待扩展功能的SDK库分离出来,作为可选的SDK库,以通过扩展改变某一功能的行为或者增强某一功能的能力,从而可以根据用户需要定制某一功能;这样,可以提供一个基本库和多个扩展库,根据定制的需求来进行基本库和不同扩展库的组合。

为便于理解本发明,对有关概念作以下说明。

对象,Object,含有“物体”的概念,一切皆物体(对象)。对象由静态的属性和动态的行为(功能)组成。例如,对于一个杯子,其属性包括,品牌、型号、容量、颜色、产地、材质、样式等,其行为包括存储、保温等。

类,class,一组具有相同属性和行为的对象的抽象,确定对象将会有的特征(属性)和行为(方法)。定义一个类需定义类的属性和方法,其中,属性表征对象的静态属性,方法表征了对象的行为(功能)。例如,定义一个手机类,可定义属性包括,屏幕、CPU大小、内存大小等,可定义方法包括,有打电话功能、有发短信的功能。

装饰模式,在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。

申请人发现,Objective-C语言中,类别(Category)的主要作用是在不改变原始类的前提下,动态地给这个类添加一些方法,这是对装饰模式的一种具体实现。类别与类不同,两者的区别:

参见图1和图2所示,图1为类和类别都定义了同名方法的一种示意图,类C定义了属性和方法function A,类别C定义了属性和同名方法function A;图2为类定义一种示意图,类C定义了属性和方法名function A,其中没有类别的定义。

在实际使用中,对于图1类和类别中都定义了同一方法,当调用方法function A时,实际执行的代码为类别中的function A;对于图2的类,当调用方法function A时,实际执行的代码为类中的function A。这意味着,基于图1而言,去除图1中的类别定义,当调用方法function A时,实际执行的代码为原始类中的function A,基于图2而言,增加图1中的类别定义,当调用方法function A,实际执行的代码为类别中的function A,这样,对于同一对象,当类中的方法代码与类别中同名方法的代码不同时,即,定义的行为(功能)不同时,就可以利用类别在不改变原始类的前提下,来实现不同行为(功能)的选择,动态地给这个类添加一些方法,从而实现灵活的功能扩展。

参见图3所示,图3为本发明实施例实现SDK功能扩展的一种流程示意图。

步骤301,对于任一类,确定所需的属性、以及所涉及的必选基本功能,按照所需的属性定义类的属性,按照基本功能定义类的方法,其中,该方法包括基本功能的第一行为,即,包括实现基本功能的第一代码;

将该类(包括属性和方法)的定义打包成第一库文件;参见图4所示,图4示出了形成类C的库文件的一种示意图。如图4中所示,类C定义了属性和方法function A,将其打包成库文件libA;

所有的类都可以按照基本功能确定所定义的方法,并分别将类打包成第一库文件(类库文件),第一库文件的集合形成基本功能的第一SDK;

步骤302,对于任一类,按照所需增加的扩展功能,为该类增加至少一个类别定义,即,定义该类别的属性和与类的方法同名的方法,其中,类别的方法包括基于该类基本功能的扩展功能的第二行为,即,包括实现扩展功能的第二代码,换言之,类别与类具有相同的方法名,但各方法具有实现不同功能的不同的代码。

将定义的类别(包括属性和方法)打包成第二库文件。

所有的类都可以按照上述方式增加对应的类别定义,并分别将类别打包成第二库文件(类别库文件),第二库文件的集合形成扩展功能的第二SDK。

如图4所示,对应于类C,定义了类别C,该类别包括属性和同名方法function A,该方法function A包括的行为与类C的方法function A包括的行为不同,即,功能代码不同,从而为类C的基本功能进行了扩展。将类别C打包成库文件libB,这样便有了两个库文件。

步骤303,根据功能需求确定引入的库文件,即,确定构建的库文件;如果仅需要基本功能,则引入从第一SDK中选择对应基本功能的第一库文件,如果需要扩展功能,则引入从第一SDK中选择对应基本功能的第一库文件的同时,还从第二SDK中引入扩展功能对应的第二库文件,其中,第二库文件中的类别是为第一库文件中的类所定义的类别,且该类别的方法与第一文件中的类的方法同名;调用类的方法,以使得方法的代码被执行。

如图4中,当一个工程(任务)中同时引入库文件libA、和库文件libB,调用类C的方法function A时,实际执行的是类别C中的方法function A;如果只引入库文件libA,则实际执行的是类C中的方法function A;如果只引入库文件libB,则不能正常使用,库文件libB只作为库文件libA的扩展使用。这样,库文件libB就相当于插件一样可用于动态地扩展功能。

本发明实施例将SDK的扩展功能与基本功能分离,并分别形成库文件,从而,基本库文件不需要改动,更换不同的扩展功能的库文件就可以定制不同的SDK版本,提升了效率。当需求各异时,避免了修改代码、并进行重新打包形成库文件的繁杂过程,避免了修改过程中可能出现的问题。在对接SDK时,通过增加、删除或替换扩展包就可以实现不同的扩展功能,而不需要对代码进行任何的修改。如果不需要额外的扩展功能,可不引入扩展库文件,一定程度上减少了库文件大小和最终生成APP的体积。

以下以移动终端的功能扩展为例来说明。

在移动终端的功能中,基础功能包括,接听和拨打电话、收发短信、上传和下载数据,而作为扩展功能,可以包括,电话的类型,例如,是视频电话还是语音电话,定制回铃音;短信包括彩信和文本,数据服务包括按照数据内容对应于不同的传输速度。

基于此,对于基础功能,定义电话的类、短信的类、数据的类,其中,对应电话的类,其类的方法包括呼出和呼入;对应短信的类,其类的方法包括接收和发送;对应数据的类,其类的方法包括上传和下载。

对于各个扩展功能,根据扩展功能的需求定义对应的类别,例如,

定义对应电话的类的类别1,定义其方法名与电话的类中的方法名相同,定义该类别的方法包括视频的呼入;

定义对应电话的类的类别2,定义其方法名与电话的类中的方法名相同,定义该类别的方法包括视频的呼出;

定义对应电话的类的类别3,定义其方法名与电话的类中的方法名相同,定义该类别的方法包括语音的呼出;

定义对应电话的类的类别4,定义其方法名与电话的类中的方法名相同,定义该类别的方法包括语音的呼入。

其它扩展功能与此类似地定义。

当以移动终端所需的扩展功能是被叫视频通话时,则引入电话的类库文件,并引入电话的类对应的类别1的类别库文件;当实现移动终端功能时,调用电话的类的方法,这样,类别1中的视频通话的功能代码被执行。当扩展功能是上述功能的组合时,只需引入对应扩展功能的类别,即,上述类别1~4可按照功能需要对应地引入。

对于短信、数据的其它扩展功能与上述类似。

通过本发明的实施例,使得扩展功能基于基础功能更为细化,扩展的粒度更为细腻,通过扩展改变某一功能的行为或者增强某一功能的能力,

本发明实施例还提供了一种计算机可读存储介质,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现如下步骤:

定义至少一个包括方法的类,

为所述类至少定义一个类别,该类别所定义的方法与所述类的方法同名,该类别的方法至少包括扩展功能的代码,

根据所需扩展功能,引入扩展功能对应的类别,并且,引入与该类别对应的类,以使得类的方法被调用时,所述类别的同名方法所包括的扩展功能代码被执行。

对于装置/网络侧设备/存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

相关技术
  • 一种扩充的面向对象软件开发工具包的功能扩展方法
  • 软件开发工具包SDK功能的调用方法及装置
技术分类

06120112390130