一种业务逻辑解耦方法及装置与流程

文档序号:11233854阅读:430来源:国知局
一种业务逻辑解耦方法及装置与流程

本发明涉及计算机技术领域,更具体地,涉及一种业务逻辑解耦方法及装置。



背景技术:

在应用开发过程中,通常会基于一个业务逻辑来实现另外一个业务逻辑。为实现这种功能,目前通常是在一个业务逻辑中植入另一个业务逻辑的实现方法。比如,在开发过程中,业务部门为了监控用户的点击事件等信息,通常会要求开发者在业务逻辑的特定位置植入打点等信息。

采用上述方式,当另一个业务逻辑的实现方法比较多时,这些实现方法都被植入前述的一个业务逻辑中,比如,打点信息的数量非常多的时候,很多的打点方法严重耦合到业务逻辑代码中,这样就会严重影响业务逻辑代码的可阅读性。同时由于打点信息与业务逻辑之间存在严重的耦合关系,很容易导致一些问题的产生,比如打点实现出现异常会直接导致业务逻辑无法正常运行。



技术实现要素:

本发明提供一种克服业务逻辑之间耦合性强的问题,提供了一种业务逻辑解耦方法及装置。

根据本发明的一个方面,提供一种业务逻辑解耦方法,包括:

s1,为第一业务逻辑定义抽象类型的第一业务逻辑类;

s2,在所述第一业务逻辑类中,定义与第二业务逻辑对应的抽象方法;

s3,定义第二业务逻辑类,所述第二业务逻辑类继承所述第一业务逻辑类;

s4,在所述第二业务逻辑类中复写所述第一业务逻辑类中的抽象方法,通过第二业务逻辑类中的抽象方法实现第二业务逻辑。

本发明的有益效果为:将第一业务逻辑定义为抽象类,并在抽象类中预埋与第二业务逻辑对应的抽象方法,并定义继承第一业务逻辑类的第二业务逻辑类,通过继承的方式使得第一业务逻辑与第二业务逻辑的实现分离,降低了两者的耦合性,避免由于第二业务逻辑出现异常影响第一业务逻辑的正常运行,同时解耦后,能够提高代码的可维护性。

在上述技术方案的基础上,本发明还可以作如下改进。

进一步的,所述与第二业务逻辑对应的抽象方法有多个,所述步骤s2具体包括:

在所述第一业务逻辑类中需要实现第二业务逻辑的每一个位置,定义与第二业务逻辑对应的抽象方法,其中,每一个位置的抽象方法均不同。

进一步的,所述第二业务逻辑分为多个类型的第二业务子逻辑,每一个类型的第二业务子逻辑对应至少一个抽象方法,所有第二业务子逻辑对应的抽象方法构成第二业务逻辑的抽象方法;

所述步骤s2具体包括:

在所述第一业务逻辑类中,定义与所述第二业务逻辑对应的所有的抽象方法。

进一步的,所述多个类型的第二业务子逻辑为并行关系或者层级关系。

进一步的,当所述多个类型的第二业务子逻辑为并行关系时,所述步骤s3具体包括:

定义多个第二业务逻辑子类,所述第二业务逻辑子类的数量与第二业务逻辑的类型数量相等,其中,每一个第二业务逻辑子类均继承所述第一业务逻辑类。

进一步的,当所述多个类型的第二业务子逻辑为层级关系时,所述步骤s2具体包括:

定义多个第二业务逻辑子类,所述第二业务逻辑子类的数量与第二业务逻辑的类型数量相等,其中,第一层级的第二业务逻辑子类继承所述第一业务逻辑类,下一层级的第二业务逻辑子类继承上一层级的第二业务逻辑子类。

进一步的,所述步骤s4具体包括:

在每一种类型的第二业务逻辑子类中,复写所述第一业务逻辑类中与该类型的第二业务子逻辑对应的抽象方法。

根据本发明的另一个方面,还提供了一种业务逻辑解耦装置,包括:

第一定义模块,用于为第一业务逻辑定义抽象类型的第一业务逻辑类;

第二定义模块,用于在所述第一业务逻辑类中,定义与第二业务逻辑对应的抽象方法;

第三定义模块,用于定义第二业务逻辑类,所述第二业务逻辑类继承所述第一业务逻辑类;

复写模块,用于在所述第二业务逻辑类中复写所述第一业务逻辑类中的抽象方法,通过第二业务逻辑类中的抽象方法实现第二业务逻辑。

进一步的,所述与第二业务逻辑对应的抽象方法有多个,所述第二定义模块具体包括:

在所述第一业务逻辑类中需要实现第二业务逻辑的每一个位置,定义与第二业务逻辑对应的抽象方法,其中,每一个位置的抽象方法均不同。

进一步的,所述第二业务逻辑分为多个类型的第二业务子逻辑,每一个类型的第二业务子逻辑对应至少一个抽象方法,所有第二业务子逻辑对应的抽象方法构成第二业务逻辑的抽象方法;

所述第二定义模块具体用于:

在所述第一业务逻辑类中,定义与所述第二业务逻辑对应的所有的抽象方法。

附图说明

图1为本发明一个实施例的业务逻辑解耦方法流程图;

图2为本发明另一个实施例的业务逻辑解耦装置连接框图;

图3为本发明又一个实施例的业务逻辑解耦装置的测试设备连接框图。

具体实施方式

下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。

参见图1,图1提供了本发明一个实施例的业务逻辑解耦方法,能够将业务逻辑之间进行解耦,降低业务逻辑间的耦合性,业务逻辑间的实现互不干扰。业务逻辑解耦方法包括:s1,为第一业务逻辑定义抽象类型的第一业务逻辑类;s2,在第一业务逻辑类中,定义与第二业务逻辑对应的抽象方法;s3,定义第二业务逻辑类,所述第二业务逻辑类继承所述第一业务逻辑类;s4,在所述第二业务逻辑类中复写所述第一业务逻辑类中的抽象方法,通过第二业务逻辑类中的抽象方法实现第二业务逻辑。

在目前的业务逻辑实现中,通常的第一业务逻辑类是一个公开的pulic类型的实体类,若要在第一业务逻辑的基础上实现第二业务逻辑,通常是在第一业务逻辑类中直接定义与第二业务逻辑对应的实现方法。这样,若第二业务逻辑的实现方法比较多时,这些实现方法会严重地耦合到第一业务逻辑类中,当第二业务逻辑出现异常时,会引起第一业务逻辑的崩溃。

因此,本实施例将现有的pulic类型的第一业务逻辑类修改为抽象类型的第一业务逻辑类,这样,第一业务逻辑就变成抽象的第一业务逻辑了。

抽象类最大的一个特性就是抽象类中可以有抽象的方法,也可以有非抽象的方法,抽象方法可以延迟到子类来进行复写,在抽象类中可以直接使用子类所复写过的抽象方法。

定义了抽象类型的第一业务逻辑类后,在第一业务逻辑类中,定义与第二业务逻辑对应的抽象方法。在抽象类中定义抽象方法需要在方法名前面加上abstract关键字来申明该方法是一个抽象方法。抽象类中的抽象方法可以只有方法申明而没有方法实现,抽象类中的抽象方法可以延迟到子类进行实例化。在抽象类中定义抽象方法来实现抽象点的预埋。

然后再定义一个全新的第二业务逻辑类,为公开的pulic类型,其中,定义的第二业务逻辑类与抽象类型的第一业务逻辑类是继承关系,即第二业务逻辑类继承第一业务逻辑类。由于是继承关系,第二业务逻辑类中就拥有第一业务逻辑类中的全部功能。随后在第二业务逻辑类中通过复写的方式来重写前述在第一业务逻辑类中定义的抽象方法。复写的方式是在抽象方法前添加override关键字来实现的。这样就可以在第二业务逻辑类中实现第一业务逻辑类中定义的抽象方法对应的功能。

本实施例通过将第一业务逻辑类定义为抽象型,在其中定义抽象方法来预埋第二业务逻辑的功能,并单独定义第二业务逻辑类来继承第一业务逻辑类,在第二业务逻辑类中复写第一业务逻辑类中定义的抽象方法,在第二业务逻辑类中实现第二业务逻辑的功能,实现了将第一业务逻辑与第二业务逻辑的分离,降低了两者的耦合性,当第二业务逻辑在实现过程中出现了异常时,不会影响第一业务逻辑的实现;同时解耦后,能够提高代码的可维护性。

在本发明的一个实施例中,所述与第二业务逻辑对应的抽象方法有多个,所述步骤s2具体包括:在所述第一业务逻辑类中需要实现第二业务逻辑的每一个位置,定义与第二业务逻辑对应的抽象方法,其中,每一个位置的抽象方法均不同。

具体的,第二业务逻辑可能包括多个,比如,在开发的过程中,业务部门为了监控用户的点击事件,会要求开发者在第一业务逻辑中的特定位置植入打点等信息,一个位置需要植入一个打点信息,一个打点信息对应一个抽象方法。因此,在具体开发过程中,在第一业务逻辑类中需要实现第二业务逻辑的每一个位置,定义与第二业务逻辑对应的抽象方法,每一个位置处的抽象方法均不同。以第二业务逻辑为打点业务逻辑为例,在第一业务逻辑类中,在需要打点的每一个位置均定义一个抽象的打点方法。由于每一个位置处的打点方法是一个抽象的方法,抽象方法是一个没有真实打点业务实现的方法,所以第一业务逻辑类并不具备真实的打点功能,只是预埋了所有需要打点的点位。在抽象的第一业务逻辑类中有多少个需要打点的点位,对应的就有多少个抽象的打点方法,这样就在第一他业务逻辑类中实现了所有点位的预埋。

此后,在定义了第二业务逻辑类后,需要在第二业务逻辑类中复写第一业务逻辑类中所有的抽象方法,通过在第二业务逻辑类中复写的抽象方法去实现第一业务逻辑中的抽象打点的功能。

在第二业务逻辑类中实现对应的业务逻辑时,比如,在第二业务逻辑类中实现打点功能时,通过调用打点管理者pointmanger的reportdot方法来实现真实的打点业务逻辑。

在本发明的另一个实施例中,第二业务逻辑分为多个类型的第二业务子逻辑,每一个类型的第二业务子逻辑对应多个抽象方法,所有第二业务子逻辑的抽象方法构成第二业务逻辑的抽象方法。

其中,第二业务逻辑可能会有多种类型,每一个类型的第二业务逻辑称为第二业务子逻辑,所有的第二业务子逻辑组成第二业务逻辑。每一个第二业务子逻辑对应有多个抽象方法,所有的第二业务子逻辑对应的所有的抽象方法构成第二业务逻辑的抽象方法。比如,前述的打点业务可以分为多种并行类型的打点子业务,每一个打点子业务对应多个抽象方法,所有的打点子业务对应的抽象方法构成打点业务的抽象方法。

在本发明的一个实施例中,多个类型的第二业务子逻辑为并行关系或者层级关系。当所述多个类型的第二业务子逻辑为并行关系时,所述步骤s2具体包括:在所述第一业务逻辑类中,定义与所述第二业务逻辑对应的所有的抽象方法。所述步骤s3具体包括:定义多个第二业务逻辑子类,所述第二业务逻辑子类的数量与第二业务逻辑的类型数量相等,其中,每一个第二业务逻辑子类均并行继承所述第一业务逻辑类。所述步骤s4具体包括:在每一种类型的第二业务逻辑子类中,复写所述第一业务逻辑类中与该类型的第二业务子逻辑对应的抽象方法。

若第二业务逻辑包括多种并列类型的第二业务子逻辑时,在第一业务逻辑中依然需要定义与第二业务逻辑对应的所有的抽象方法。然后,定义多个第二业务逻辑子类,第二业务逻辑子类的数量与第二业务逻辑的类型数量相等,且每一个第二业务逻辑子类均继承第一业务逻辑类,可以理解为所有的第二业务逻辑子类并行继承第一业务逻辑类。随后,在每一个第二业务逻辑子类中复写第一业务逻辑类中与第二业务逻辑对应的多个抽象方法,在每一个第二业务逻辑子类中实现相应的第二业务子逻辑。第一业务逻辑的实现和每一个第二业务子逻辑的实现互不干扰,多个第二业务逻辑子类的实现也互不干扰,真正实现了多者之间的解耦,耦合性低。

其中,除了上述的打点业务,第二业务逻辑还可以为其它的业务逻辑,比如,数据源提供业务逻辑。具体为,当用户访问不同的页面时,服务器针对不同的页面访问,需要提供不同的数据源。那么本实施例可以定义一个抽象的第一业务逻辑类,在抽象的第一业务逻辑类中定义多个数据源提供的抽象方法,每一个数据源提供抽象方法能够实现对应的页面访问所需的数据源。

然后定义多个不同的第二业务逻辑子类,每一个第二业务逻辑子类用来实现一种数据源的提供功能,这些第二业务逻辑子类的关系为并行关系。每一个第二业务逻辑子类均继承第一业务逻辑类,在每一个第二业务逻辑子类中复写第一业务逻辑类中提供相应的数据源的抽象方法。通过在不同的第二业务逻辑子类中实现不同的数据源的提供,不同数据源提供的实现过程中互不干扰,避免了因此一个数据源提供失败,影响所有页面访问的实现。

在本发明的另一个实施例中,当多个类型的第二业务子逻辑具有层级关系时,所述步骤s2具体包括:在所述第一业务逻辑类中,定义与所述第二业务逻辑对应的所有的抽象方法。

所述步骤s3具体包括:定义多个第二业务逻辑子类,所述第二业务逻辑子类的数量与第二业务逻辑的类型数量相等,其中,第一层级的第二业务逻辑子类继承所述第一业务逻辑类,下一层级的第二业务逻辑子类继承上一层级的第二业务逻辑子类。所述步骤s4具体包括:在每一种类型的第二业务逻辑子类中,复写所述第一业务逻辑类中与该类型的第二业务子逻辑对应的抽象方法。

上述实施例中的所有的第二业务子逻辑均为并行关系,本实施例中的第二业务子逻辑具有层级关系。同样的,在第一业务逻辑类中定义与第二业务逻辑对应的所有的抽象方法。然后,定义多个第二业务逻辑子类,第二业务逻辑子类的数量与第二业务逻辑的类型数量相等。由于多个第二业务逻辑子类之间具有层级关系,因此,第一层级的第二业务逻辑子类继承第一业务逻辑类,其它的为,下一层级的第二业务逻辑子类继承上一层级的第二业务逻辑子类。且在每一个第二业务逻辑子类中复写第一业务逻辑类中定义的与该类型的第二业务子逻辑对应的抽象方法,在每一个第二业务逻辑子类中实现相应的第二业务子逻辑。当下一层级的业务逻辑发生异常时,不会影响上一层级的业务逻辑的正常实现。

参加图2,图2提供了本发明另一个实施例的业务逻辑解耦装置,包括第一定义模块21、第二定义模块22、第三定义模块23和复写模块24。

第一定义模块21,用于为第一业务逻辑定义抽象类型的第一业务逻辑类;

第二定义模块22,用于在所述第一业务逻辑类中,定义与第二业务逻辑对应的抽象方法;

第三定义模块23,用于定义第二业务逻辑类,所述第二业务逻辑类继承所述第一业务逻辑类;

复写模块24,用于在所述第二业务逻辑类中复写所述第一业务逻辑类中的抽象方法,通过第二业务逻辑类中的抽象方法实现第二业务逻辑。

其中,与第二业务逻辑对应的抽象方法有多个,所述第二定义模块22具体用于:

在所述第一业务逻辑类中需要实现第二业务逻辑的每一个位置,定义与第二业务逻辑对应的抽象方法,其中,每一个位置的抽象方法均不同。

其中,所述第二业务逻辑分为多个类型的第二业务子逻辑,每一个类型的第二业务子逻辑对应多个抽象方法,所有第二业务子逻辑的抽象方法构成第二业务逻辑的抽象方法。

基于此,第二定义模块22具体用于:

在所述第一业务逻辑类中,定义与所述第二业务逻辑对应的所有的抽象方法。

其中,所述多个类型的第二业务子逻辑为并行关系或者层级关系。

当所述多个类型的第二业务子逻辑为并行关系时,所述第三定义模块23具体用于:

定义多个第二业务逻辑子类,所述第二业务逻辑子类的数量与第二业务逻辑的类型数量相等,其中,每一个第二业务逻辑子类均继承所述第一业务逻辑类。

当所述多个类型的第二业务子逻辑为层级关系时,所述第三定义模块23具体用于:

定义多个第二业务逻辑子类,所述第二业务逻辑子类的数量与第二业务逻辑的类型数量相等,其中,第一层级的第二业务逻辑子类继承所述第一业务逻辑类,下一层级的第二业务逻辑子类继承上一层级的第二业务逻辑子类。

所述复写模块24具体用于:

在每一种类型的第二业务逻辑子类中,复写所述第一业务逻辑类中与该类型的第二业务子逻辑对应的抽象方法。

基于上述图2对应实施例所提供的业务逻辑解耦装置,本发明还提供了一种业务逻辑解耦装置的测试设备。参见图3,该业务逻辑解耦装置的测试设备包括:处理器(processor)301、存储器(memory)302、通信接口(communicationsinterface)303和总线304;

其中,处理器301、存储器302及通信接口303分别通过总线304完成相互间的通信;

通信接口303用于该测试设备与业务逻辑解耦装置的通信设备之间的信息传输;

处理器301用于调用存储器302中的程序指令,以执行上述图1对应实施例所提供的业务逻辑解耦方法,例如包括:为第一业务逻辑定义抽象类型的第一业务逻辑类;在所述第一业务逻辑类中,定义与第二业务逻辑对应的抽象方法;定义第二业务逻辑类,所述第二业务逻辑类继承所述第一业务逻辑类;在所述第二业务逻辑类中复写所述第一业务逻辑类中的抽象方法,通过第二业务逻辑类中的抽象方法实现第二业务逻辑。

本发明公开一种计算机程序产品,该计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,该计算机程序包括程序指令,当程序指令被计算机执行时,计算机能够执行上述图1对应实施例所提供的业务逻辑解耦方法,例如包括:为第一业务逻辑定义抽象类型的第一业务逻辑类;在所述第一业务逻辑类中,定义与第二业务逻辑对应的抽象方法;定义第二业务逻辑类,所述第二业务逻辑类继承所述第一业务逻辑类;在所述第二业务逻辑类中复写所述第一业务逻辑类中的抽象方法,通过第二业务逻辑类中的抽象方法实现第二业务逻辑。

本发明提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机指令,该计算机指令使计算机执行上述图1对应实施例所提供的业务逻辑解耦方法,例如包括:为第一业务逻辑定义抽象类型的第一业务逻辑类;在所述第一业务逻辑类中,定义与第二业务逻辑对应的抽象方法;定义第二业务逻辑类,所述第二业务逻辑类继承所述第一业务逻辑类;在所述第二业务逻辑类中复写所述第一业务逻辑类中的抽象方法,通过第二业务逻辑类中的抽象方法实现第二业务逻辑。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

以上所描述的业务逻辑解耦装置的测试设备等实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分方法。

本发明提供的业务逻辑解耦方法及装置,将第一业务逻辑定义为抽象类,并在抽象类中预埋与第二业务逻辑对应的抽象方法,并定义继承第一业务逻辑类的第二业务逻辑类,通过继承的方式使得第一业务逻辑与第二业务逻辑的实现分离,降低了两者的耦合性,避免由于第二业务逻辑出现异常影响第一业务逻辑的正常运行,同时解耦后,能够提高代码的可维护性。

最后,本申请的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1