应用程序中共享模块的依赖解耦处理方法和装置技术领域
本申请涉及软件技术领域,特别涉及一种应用程序中共享模块的依赖解耦处理方法和装
置。
背景技术
应用程序是由多个模块组成的,且模块之间存在依赖关系。由于不同的应用程序中可存
在具有相同功能的模块,因此,针对该功能统一开发对应的模块,并公开给需要该模块的应
用程序。即该模块可在不同应用程序中共享使用,被称为共享模块。当共享模块被A应用
程序使用时,共享模块使用应用程序A中的相关模块来满足共享模块的依赖关系,当共享
模块被B应用程序使用时,共享模块使用应用程序B中的相关模块来满足共享模块的依赖
关系。
举例来说,大多数不同的购物应用程序都具有下单功能,因此,下单模块即为供多个购
物应用程共享使用的共享模块。下单模块在购物应用程序中依赖于其中的网络请求以及唤起
支付等功能。由于在不同购物应用程序中发起网络请求以及唤起支付功能的方式是不同的,
那么当下单模块运行在A应用程序中时,需要调用A中发起网络请求功能以及唤起支付功
能,当下单模块运行在B中时,需要调用B中发起网络请求功能以及唤起支付功能。
目前,在不同应用程序中共享模块所依赖的功能模块需要升级到一致或相同版本,也就
是说,在使用共享模块的应用程序中,共享模块所依赖的功能模块的版本需要与共享模块版
本匹配或者一致。由此可见,当前的共享模块与应用程序中指定版本的功能模块具有强耦合
的关系,否则会出现应用程序不兼容的情况。这对软件开发人员来说,需要针对不同版本的
共享分别开发应用程序,增加了应用程序开发的工作量,且限制了具有共享模块的应用程序
的独立发展;对用户来说,需要在终端设备中安装版本匹配或者一致的应用程序,使用不便,
体验差。
发明内容
本申请旨在至少在一定程度上解决上述技术问题。
为此,本申请的第一个目的在于提出一种应用程序中共享模块的依赖解耦处理方法,解
除了共享模块的版本依赖,使得共享模块可使用不同的功能模块来满足其依赖。
本申请的第二个目的在于提出一种应用程序中共享模块的依赖解耦处理装置。
为达上述目的,根据本申请第一方面实施例提出了一种应用程序中共享模块的依赖解耦
处理方法,所述共享模块依赖于使用所述共享模块的应用程序中的至少一个功能,所述方法
包括以下步骤:分别根据所述至少一个功能在所述共享模块中设置至少一个接口,其中,所
述至少一个接口分别用于描述所述至少一个功能;分别根据所述至少一个接口在所述应用程
序中部署至少一个功能模块,其中,所述至少一个功能模块用于提供与所述至少一个接口分
别对应的所述至少一个功能;建立所述至少一个功能模块与所述至少一个接口的绑定关系,
以便当所述共享模块被所述应用程序唤起时,根据所述绑定关系对所述共享模块进行依赖解
耦处理。
本申请实施例的应用程序中共享模块的依赖解耦处理方法,根据共享模块所依赖的功能
设置接口,并在使用共享模块的应用程序中部署与接口对应的功能模块,并建立共享模块中
的接口与应用程序中的功能模块的绑定关系,从而,可根据绑定关系对共享模块进行依赖解
耦处理,解除共享模块与其依赖的功能模块的版本之间的依赖关系,且可通过增删、更新接
口等方式灵活地添加、更改共享模块所依赖的功能模块,解除了共享模块的版本依赖,使得
共享模块可使用不同的功能模块来满足其依赖,且更加灵活、易于开发。
本申请第二方面实施例提供了一种应用程序中共享模块的依赖解耦处理装置,所述共享
模块依赖于使用所述共享模块的应用程序中的至少一个功能,所述装置包括:设置模块,用
于分别根据所述至少一个功能在所述共享模块中设置至少一个接口,其中,所述至少一个接
口分别用于描述所述至少一个功能;部署模块,用于分别根据所述至少一个接口在所述应用
程序中部署至少一个功能模块,其中,所述至少一个功能模块用于提供与所述至少一个接口
分别对应的所述至少一个功能;建立模块,用于建立所述至少一个功能模块与所述至少一个
接口的绑定关系,以便当所述共享模块被所述应用程序唤起时,根据所述绑定关系对所述共
享模块进行依赖解耦处理。
本申请实施例的应用程序中共享模块的依赖解耦处理装置,根据共享模块所依赖的功能
设置接口,并在使用共享模块的应用程序中部署与接口对应的功能模块,并建立共享模块中
的接口与应用程序中的功能模块的绑定关系,从而,可根据绑定关系对共享模块进行依赖解
耦处理,解除共享模块与其依赖的功能模块的版本之间的依赖关系,且可通过增删、更新接
口等方式灵活地添加、更改共享模块所依赖的功能模块,解除了共享模块的版本依赖,使得
共享模块可使用不同的功能模块来满足其依赖,且更加灵活、易于开发。
本申请的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明
显,或通过本申请的实践了解到。
附图说明
本申请的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和
容易理解,其中:
图1为根据本申请一个实施例的应用程序中共享模块的依赖解耦处理方法的流程图;
图2为根据本申请一个实施例的应用程序中共享模块的依赖解耦处理装置的结构示意
图;
图3为根据本申请另一个实施例的应用程序中共享模块的依赖解耦处理装置的结构示
意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或
类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的
实施例是示例性的,仅用于解释本申请,而不能理解为对本申请的限制。
下面参考附图描述根据本申请实施例的应用程序中共享模块的依赖解耦处理方法和装
置。
图1为根据本申请一个实施例的应用程序中共享模块的依赖解耦处理方法的流程图。
其中,共享模块依赖于使用共享模块的应用程序中的至少一个功能。也就是说,当共享
模块被一个应用程序使用时,共享模块对应的功能需要依赖于该应用程序中相应的功能模块
来实现。以共享模块为在线购物应用程序中实现用户的下单操作的下单模块为例,当下单模
块被在线购物应用程序使用时,下单模块需要依赖于在线购物应用中的发起网络请求和唤起
支付的功能。
如图1所示,根据本申请实施例的应用程序中共享模块的依赖解耦处理方法,包括以下
步骤:
S101,分别根据使用所述共享模块的应用程序的至少一个功能在共享模块中设置至少一
个接口,其中,至少一个接口分别用于描述所述至少一个功能。
在申请的一个实施例中,由于共享模块依赖于使用该共享模块的应用程序中的功能,因
此可根据共享模块所依赖的功能分别抽取接口。应当理解,本申请中的接口为用于描述相应
功能的接口函数,包括函数名称、参数的数目和种类等成员变量,但是不包括实现该接口对
应的功能的方法。
以共享模块为在线购物应用程序中实现用户的下单操作的下单模块为例,下单模块需要
依赖于所述在线购物应用程序的发起网络请求和唤起支付的功能,则可在下单模块中定义与
发起网络请求功能对应的接口以及与唤起支付功能分别对应的接口及其成员变量。
S102,分别根据至少一个接口在应用程序中部署至少一个功能模块,其中,至少一个功
能模块用于提供与至少一个接口分别对应的至少一个功能。
具体地,在使用共享模块的应用程序内,可针对共享模块所依赖的功能分别部署相应的
功能模块,且每个功能模块与用于描述相应功能的接口相匹配。功能模块用于满足或者提供
相应接口对应的功能,又可被称为实现,即用于满足或者提供相应接口对应的功能的代码集
合。
其中,功能模块与接口相匹配是指功能模块中的参数数目和种类与接口中的参数数目和
种类一致。
以共享模块为下单模块为例,如果有应用程序A和应用程序B使用下单模块,则可分
别根据S101中设置的至少一个接口在应用程序A和应用程序B中部署下单模块所依赖的发
起网络请求和唤起支付功能对应的功能模块。
S103,建立至少一个功能模块与至少一个接口的绑定关系。
在申请的一个实施例中,当应用程序中只部署了一个功能模块以提供至少一个接口中的
第一接口对应的功能时,可根据接口类型建立第一接口与第一接口对应的功能模块的绑定关
系。也就是说,对于一个接口来说,如果应用程序中只有一个功能模块提供该接口对应的功
能,则可根据接口类型,将相应类型的接口与需要该类型接口的功能模块进行绑定。由于通
过接口类型建立绑定关系的方式将接口与功能模块直接进行绑定,那么,如果在应用程序中
部署了多个功能模块来提供一个接口对应的功能时,根据接口类型则难以确定使用那个功能
模块来执行以实现相应的功能。因此,此种方式适用于接口只有一个对应的功能模块的情况。
在本申请的另一个实施例中,每个功能对应的接口的成员变量上标注有所述功能的标识
信息,每个功能对应的功能模块分别标注有所述功能的标识信息,因此,还可根据功能的标
识信息建立至少一个功能模块与至少一个接口的绑定关系。具体地,可在接口或者功能模块
中,可通过注解标注功能的标识信息。从而可将具有相同标识信息的接口和功能模块进行绑
定。其中,功能的标识信息为用于唯一标识功能的信息,举例来说,功能的标识信息可以是
功能的名称等。此种绑定方式对应用程序中部署了一个或多个功能模块来提供一个接口对应
的功能的情况均可使用。
S104,当共享模块被应用程序唤起时,根据绑定关系对共享模块进行依赖解耦处理,以
实现相应的功能。
在本申请的实施例中,当共享模块被应用程序唤起时,共享模块根据绑定关系调用应程
序中与每个接口对应的功能模块进行实例化,以实现相应的功能。
相对于相关技术中共享模块强耦合了使用共享模块的应用程序的版本来说,本申请的实
施例中,在实现共享模块的功能时,共享模块不需与使用该共享模块的应用程序进行版本匹
配,从而实现了共享模块对应用程序版本的解耦。
其中,实例化包括单例模式和多例模式。具体地,当共享模块的接口与应用程序中的功
能模块的绑定关系是根据接口类型进行绑定的,可根据接口类型确定每个接口唯一对应的功
能模块进行实例化,此时实例化为单例模式。
当共享模块的接口与应用程序中的功能模块的绑定关系是根据功能的标识信息进行绑
定的,则多个功能模块可与同一接口进行绑定,则在实例化时,可确定接口成员变量中的功
能的标识信息,然后找到具有该功能的标识信息的功能模块,并进行实例化,此时,找到的
具有该功能的标识信息的功能模块可为多个,则实例化为多例模式。
本申请实施例的应用程序中共享模块的依赖解耦处理方法,根据共享模块所依赖的功能
设置接口,并在使用共享模块的应用程序中部署与接口对应的功能模块,并建立共享模块中
的接口与应用程序中的功能模块的绑定关系,从而,可根据绑定关系对共享模块进行依赖解
耦处理,解除共享模块与其依赖的功能模块的版本之间的依赖关系,且可通过增删、更新接
口等方式灵活地添加、更改共享模块所依赖的功能模块,解除了共享模块的版本依赖,使得
共享模块可使用不同的功能模块来满足其依赖,且更加灵活、易于开发。
此外,本申请实施例的应用程序中共享模块的依赖解耦处理方法中,在功能模块部署完
成时,并不进行实例化,而是在与功能模块绑定的接口被调用时,才进行实例化,从而能够
减少应用程序的运行负担,提高性能。
为了实现上述实施例,本申请还提出一种应用程序中共享模块的依赖解耦处理装置。
图2为根据本申请一个实施例的应用程序中共享模块的依赖解耦处理装置的结构示意
图。
其中,所述共享模块依赖于使用所述共享模块的应用程序中的至少一个功能。也就是说,
当共享模块被一个应用程序使用时,共享模块对应的功能需要依赖于该应用程序中相应的功
能模块来实现。以共享模块为在线购物应用程序中实现用户的下单操作的下单模块为例,当
下单模块被在线购物应用程序使用时,下单模块需要依赖于在线购物应用中的发起网络请求
和唤起支付的功能。
如图2所示,根据本申请实施例的应用程序中共享模块的依赖解耦处理装置,包括:设
置模块10、部署模块20和建立模块30。
具体地,设置模块10用于分别根据使用所述共享模块的应用程序的至少一个功能在共
享模块中设置至少一个接口,其中,至少一个接口分别用于描述所述至少一个功能。
在申请的一个实施例中,由于共享模块依赖于使用该共享模块的应用程序中的功能,因
此可由设置模块10根据共享模块所依赖的功能分别抽取接口。应当理解,本申请中的接口
为用于描述相应功能的接口函数,包括函数名称、参数的数目和种类等成员变量,但是不包
括实现该接口对应的功能的方法。
以共享模块为在线购物应用程序中实现用户的下单操作的下单模块为例,下单模块需要
依赖于所述在线购物应用程序的发起网络请求和唤起支付的功能,则可在下单模块中定义与
发起网络请求功能对应的接口以及与唤起支付功能分别对应的接口及其成员变量。
部署模块20用于分别根据至少一个接口在应用程序中部署至少一个功能模块,其中,
至少一个功能模块用于提供与至少一个接口分别对应的至少一个功能。
具体地,在使用共享模块的应用程序内,部署模块20可针对共享模块所依赖的功能分
别部署相应的功能模块,且每个功能模块与用于描述相应功能的接口相匹配。功能模块用于
满足或者提供相应接口对应的功能,又可被称为实现,即用于满足或者提供相应接口对应的
功能的代码集合。
其中,功能模块与接口相匹配是指功能模块中的参数数目和种类与接口中的参数数目和
种类一致。
以共享模块为下单模块为例,如果有应用程序A和应用程序B使用下单模块,则部署
模块20可分别根据设置模块10设置的至少一个接口在应用程序A和应用程序B中部署下
单模块所依赖的发起网络请求和唤起支付功能对应的功能模块。
建立模块30用于建立至少一个功能模块与至少一个接口的绑定关系,以便当共享模块
被应用程序唤起时,根据绑定关系对共享模块进行依赖解耦处理,以实现相应的功能。
在申请的一个实施例中,当应用程序中只部署了一个功能模块以提供至少一个接口中的
第一接口对应的功能时,建立模块30可根据接口类型建立第一接口与第一接口对应的功能
模块的绑定关系。也就是说,对于一个接口来说,如果应用程序中只有一个功能模块提供该
接口对应的功能,则可根据接口类型,将相应类型的接口与需要该类型接口的功能模块进行
绑定。由于通过接口类型建立绑定关系的方式将接口与功能模块直接进行绑定,那么,如果
在应用程序中部署了多个功能模块来提供一个接口对应的功能时,根据接口类型则难以确定
使用那个功能模块来执行以实现相应的功能。因此,此种方式适用于接口只有一个对应的功
能模块的情况。
在本申请的另一个实施例中,每个功能对应的接口的成员变量上标注有所述功能的标识
信息,每个功能对应的功能模块分别标注有所述功能的标识信息,因此,建立模块30还可
根据功能的标识信息建立至少一个功能模块与至少一个接口的绑定关系。具体地,可在接口
或者功能模块中,可通过注解标注功能的标识信息。从而建立模块30可将具有相同标识信
息的接口和功能模块进行绑定。其中,功能的标识信息为用于唯一标识功能的信息,举例来
说,功能的标识信息可以是功能的名称等。此种绑定方式对应用程序中部署了一个或多个功
能模块来提供一个接口对应的功能的情况均可使用。
进一步地,如图3所示,该应用程序中共享模块的依赖解耦处理装置还可包括处理模块
40。
其中,处理模块40用于当共享模块被应用程序唤起时,根据绑定关系对共享模块进行
依赖解耦处理,以实现相应的功能。
在本申请的实施例中,处理模块40具体用于当共享模块被应用程序唤起时,共享模块
根据绑定关系调用应程序中与每个接口对应的功能模块进行实例化,以实现相应的功能。
相对于相关技术中共享模块强耦合了使用共享模块的应用程序的版本来说,本申请的实
施例中,在实现共享模块的功能时,共享模块不需与使用该共享模块的应用程序进行版本匹
配,从而实现了共享模块对应用程序版本的解耦。
其中,实例化包括单例模式和多例模式。具体地,当共享模块的接口与应用程序中的功
能模块的绑定关系是根据接口类型进行绑定的,处理模块40可根据接口类型确定每个接口
唯一对应的功能模块进行实例化,此时实例化为单例模式。
当共享模块的接口与应用程序中的功能模块的绑定关系是根据功能的标识信息进行绑
定的,则多个功能模块可与同一接口进行绑定,则在实例化时,处理模块40可确定接口成
员变量中的功能的标识信息,然后找到具有该功能的标识信息的功能模块,并进行实例化,
此时,找到的具有该功能的标识信息的功能模块可为多个,则实例化为多例模式。
本申请实施例的应用程序中共享模块的依赖解耦处理装置,根据共享模块所依赖的功能
设置接口,并在使用共享模块的应用程序中部署与接口对应的功能模块,并建立共享模块中
的接口与应用程序中的功能模块的绑定关系,从而,可根据绑定关系对共享模块进行依赖解
耦处理,解除共享模块与其依赖的功能模块的版本之间的依赖关系,且可通过增删、更新接
口等方式灵活地添加、更改共享模块所依赖的功能模块,解除了共享模块的版本依赖,使得
共享模块可使用不同的功能模块来满足其依赖,且更加灵活、易于开发。
此外,本申请实施例的应用程序中共享模块的依赖解耦处理方法中,在功能模块部署完
成时,并不进行实例化,而是在与功能模块绑定的接口被调用时,才进行实例化,从而能够
减少应用程序的运行负担,提高性能。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或
更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且
本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根
据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所
属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实
现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执
行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、
装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。
就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以
供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机
可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电
子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),
可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储
器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的
介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其
他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施
方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件
来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术
中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻
辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程
门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可
以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该
程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个
单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以
采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功
能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介
质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、
或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含
于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的
是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或
多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本申请的实施例,本领域的普通技术人员可以理解:在不脱离本
申请的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本申请的
范围由权利要求及其等同限定。