基于java的动态加载命令的方法及装置与流程

文档序号:12119938阅读:223来源:国知局
基于java的动态加载命令的方法及装置与流程

本发明涉及软件架构技术领域,尤其涉及一种基于java的动态加载命令的方法及装置。



背景技术:

软件架构(software architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。

Java注解:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。注解是以‘@注解名’在代码中存在的,根据注解参数的个数,我们可以将注解分为:标记注解、单值注解、完整注解三类。它们都不会直接影响到程序的语义,只是作为注解(标识)存在。另外,可以在编译时选择代码里的注解是否只存在于源代码级,或者它也能在class文件、或者运行时中出现(SOURCE/CLASS/RUNTIME)。

在实际应用中,一般的做法是编写每个功能的实现类,根据命令加载不同的功能类实现相关功能,对架构设计来说是高耦合的,在软件生命周期中是不易扩展、维护的。系统耦合度太高不利于扩展和维护,修改一个类的内容要关联修改多个跟这个有关系的类,对于程序代码的维护成本非常高。



技术实现要素:

本发明的主要目的是提供一种基于java的动态加载命令的方法,能够有效的降低程序的耦合度,有利于提高程序的扩展能力。

为实现上述目的,本发明采用的一个技术方案为:提供一种基于java的动态加载命令的方法,包括如下步骤:

创建接口实现类的实例,其中,所述接口实现类的实例包含有至少一命令注解;

接收动态加载命令,所述动态加载命令中包含有命令名称;

将待动态加载的命令名称与接口实现类的实例的命令注解进行匹配,

如果待动态加载的命令名称与接口实现类的实例的命令注解匹配成功,则调用与该命令注解对应的接口实现类的实例。

优选地,所述创建接口实现类的实例的步骤,具体包括:

预先定义一命令接口类以及描述所述命令接口类的java注解类,其中,所述命令接口类包含有一引导程序;

根据该引导程序在原程序的接口实现类中实现命令接口类;以及

将java注解类对应添加至命令接口类中,形成带有命令注解的接口实现类;

在原程序启动时,扫描带有命令注解的接口实现类,并根据带有命令注解的接口实现类创建包含有命令注解的接口实现类的实例。

优选地,所述在原程序启动时,扫描带有命令注解的接口实现类的步骤,具体包括:

在原程序启动时,利用java反射机制扫描带有命令注解的接口实现类。

优选地,所述创建接口实现类的实例的步骤之后,还包括:

将接口实现类的实例缓存至命令池中。

为实现上述目的,本发明采用的另一个技术方案为:提供一种基于java的动态加载命令的装置,包括:

创建模块,用于创建接口实现类的实例,其中,所述接口实现类的实例包含有至少一命令注解;

接收模块,用于接收动态加载命令,所述动态加载命令中包含有命令名称;

匹配模块,用于将待动态加载的命令名称与接口实现类的实例的命令注解进行匹配,

如果待动态加载的命令名称与接口实现类的实例的命令注解匹配成功,则调用与该命令注解对应的接口实现类的实例。

优选地,所述创建模块,具体包括:

定义单元,用于预先定义一命令接口类以及描述所述命令接口类的java注解类,其中,所述命令接口类包含有一引导程序;

实现单元,用于根据该引导程序在原程序的接口实现类中实现命令接口类,并将java注解类对应添加至命令接口类中,形成带有命令注解的接口实现类;

扫描单元,在原程序启动时,用于扫描带有命令注解的接口实现类;以及

创建单元,用于根据带有命令注解的接口实现类创建包含有命令注解的接口实现类的实例。

优选地,所述扫描单元,具体用于:

在原程序启动时,利用java反射机制扫描带有命令注解的接口实现类。

优选地,所述创建模块,还用于:

将接口实现类的实例缓存至命令池中。

本发明的技术方案主要采用,首先创建接口实现类的实例,该接口实现类的实例包含有至少一命令注解;然后接收用户发送的动态加载命令,所述动态加载命令中包含有命令名称;再将待动态加载的命令名称与接口实现类的实例的命令注解进行匹配,如果待动态加载的命令名称与接口实现类的实例的命令注解匹配成功,则调用与该命令注解对应的接口实现类的实例,并可以将调用的接口实现类的实例完成相关的功能操作。通过创建包含有命令注解的接口实现类的实例,在接收到动态加载命令时,能够调用与该命令注解对应的接口实现类的实例,实现对应的命令操作,可以降低对象的耦合度,有利于系统开发和维护;另外,本方案还可以在程序运行时动态增加修改命令,提高了程序的扩展性,使得定制更加灵活。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。

图1为本发明一实施例基于java的动态加载命令的方法的方法流程图;

图2为图1的步骤S10的具体流程图;

图3为本发明另一实施例基于java的动态加载命令的装置的模块方框图;

图4为图3的创建模块的模块方框图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明,本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。

请参照图1,在本发明实施例中,该基于java的动态加载命令的方法,包括如下步骤:

步骤S10、创建接口实现类的实例,其中,所述接口实现类的实例包含有至少一命令注解;

步骤S20、接收动态加载命令,所述动态加载命令中包含有命令名称;

步骤S30、将待动态加载的命令名称与接口实现类的实例的命令注解进行匹配,

如果待动态加载的命令名称与接口实现类的实例的命令注解匹配成功,则调用与该命令注解对应的接口实现类的实例。

本实施例中,该接口实现类可以包含有多个命令注解,每一命令注解相当于命令标识,当接收到动态加载命令时,通过将动态加载命令与命令注解匹配,在匹配成功后可以调用该命令注解对应的接口实现类的实例,以执行对应的功能操作。可以理解的,本方案中的创建的接口实现类的实例可能有多个,多个接口实现类的实例可能满足用户的不同要求,多个接口实现类的实例可以暂存于命令池中。上述实施例中,如果待动态加载的命令名称与接口实现类的实例的命令注解匹配失败时,则匹配失败,并返回调用失败的信息。

本发明的技术方案主要采用,首先创建接口实现类的实例,该接口实现类的实例包含有至少一命令注解;然后接收用户发送的动态加载命令,所述动态加载命令中包含有命令名称;再将待动态加载的命令名称与接口实现类的实例的命令注解进行匹配,如果待动态加载的命令名称与接口实现类的实例的命令注解匹配成功,则调用与该命令注解对应的接口实现类的实例,并可以将调用的接口实现类的实例完成相关的功能操作。通过创建包含有命令注解的接口实现类的实例,在接收到动态加载命令时,能够调用与该命令注解对应的接口实现类的实例,实现对应的命令操作,可以降低对象的耦合度,有利于系统开发和维护;另外,本方案还可以在程序运行时动态增加修改命令,提高了程序的扩展性,使得定制更加灵活。

请参照图2,在一具体的实施例中,所述创建接口实现类的实例的步骤S10,具体包括:

步骤S11、预先定义一命令接口类以及描述所述命令接口类的java注解类,其中,所述命令接口类包含有一引导程序;

步骤S12、根据该引导程序在原程序的接口实现类中实现命令接口类,并将java注解类对应添加至命令接口类中,形成带有命令注解的接口实现类;

步骤S13、在原程序启动时,扫描带有命令注解的接口实现类;

步骤S14、根据带有命令注解的接口实现类创建包含有命令注解的接口实现类的实例。

本实施例中,通过先定义一命令接口类以及对应的java注解类,而后通过引导程序在原程序的实现类实现该命令接口类,并将java注解类添加至对应的命令接口类中,得到带有命令注解的接口实现类;在原程序启动扫描或者定期扫描带有命令注解的接口实现类;以及根据该带有命令注解的接口实现类创建接口实现类的实例。由于java注解类包含有一个或多个命令标识,在用户输入对应的动态加载命令时,该动态加载命令的命令名称与命令注解的命令标识进行匹配,在匹配成功后可以调用对应的接口类的实例,实现相应的功能,由于一个命令接口类的实例能够解决多个功能,无需创建多个功能类,可以降低对象的耦合度,提高了程序的扩展性,使得功能定制更加灵活。

在一具体的实施例中,所述在原程序启动时,扫描带有命令注解的接口实现类的步骤,具体包括:

在原程序启动时,利用java反射机制扫描带有命令注解的接口实现类。

本实施例中,可以java反射机制扫描带有命令注解的接口实现类,将符合规则的接口实现类以键值对的方式缓存到命令池中。

进一步的,所述创建接口实现类的实例的步骤之后,还包括:

将接口实现类的实例缓存至命令池中。

本实施例中,该命令池可以缓存多个接口实现类的实例,形成包含有多个接口实现类的实例集合,以方便用户的调用,实现不同的功能操作。

在12345服务热线中,接收和处理微信事件命令的时候,例如用户发送zhbd(账号绑定)命令,系统接收到zhbn命令时,通过本发明的方案匹配zhbn命令对应的命令注解的接口实现类的实例,并根据匹配成功的结果执行账号绑定操作,以及将执行结果返回给用户。后期在系统功能需要增加jdcx(进度查询)命令的时候,我们只需要增加一个接口接口实现类,在接口实现类中用注解标注命令名为“jdcx”,通过本发明的创建接口实现类的实例方案,即可实现在用户发送jdcx命令调用到该接口实现类执行进度查询操作,并返回预期结果给用户。

请参照图3,本发明的实施例中,该基于java的动态加载命令的装置,包括:

创建模块10,用于创建接口实现类的实例,其中,所述接口实现类的实例包含有至少一命令注解;

接收模块20,用于接收动态加载命令,所述动态加载命令中包含有命令名称;

匹配模块30,用于将待动态加载的命令名称与接口实现类的实例的命令注解进行匹配,

如果待动态加载的命令名称与接口实现类的实例的命令注解匹配成功,则调用与该命令注解对应的接口实现类的实例。

本实施例中,该通过创建模块10创建的接口实现类可以包含有多个命令注解,每一命令注解相当于命令标识,当接收模块20接收到动态加载命令时,通过匹配模块30,可以将动态加载命令与命令注解匹配,在匹配成功后可以调用与该命令注解对应的接口实现类的实例,以执行对应的功能操作。可以理解的,本方案中的创建的接口实现类的实例可能有多个,多个接口实现类的实例可能满足用户的不同要求,多个接口实现类的实例可以暂存于命令池中。上述实施例中,如果待动态加载的命令名称与接口实现类的实例的命令注解匹配失败时,则匹配失败,并返回调用失败的信息给用户。

请参照图4,在一具体的实施例中,所述创建模块10,具体包括:

定义单元11,用于预先定义一命令接口类以及描述所述命令接口类的java注解类,其中,所述命令接口类包含有一引导程序;

实现单元12,用于根据该引导程序在原程序的接口实现类中实现命令接口类,并将java注解类对应添加至命令接口类中,形成带有命令注解的接口实现类;

扫描单元13,在原程序启动时,用于扫描带有命令注解的接口实现类;以及

创建单元14,用于根据带有命令注解的接口实现类创建包含有命令注解的接口实现类的实例。

本实施例中,通过定义单元11可以预先定义一命令接口类以及对应的java注解类,而后通过实现单元12,根据引导程序在原程序的实现类实现该命令接口类,并将java注解类添加至对应的命令接口类中,得到带有命令注解的接口实现类;扫描单元13,在原程序启动扫描或者定期扫描带有命令注解的接口实现类;最后,由创建单元14根据该带有命令注解的接口实现类创建接口实现类的实例。由于java注解类包含有一个或多个命令标识,在用户输入对应的动态加载命令时,该动态加载命令的命令名称与命令注解的命令标识进行匹配,在匹配成功后可以调用对应的接口类的实例,实现相应的功能,由于一个命令接口类的实例能够解决多个功能,无需创建多个功能类,可以降低对象的耦合度,提高了程序的扩展性,使得功能定制更加灵活。

在一具体的实施例中,所述扫描单元13,具体用于:

在原程序启动时,利用java反射机制扫描带有命令注解的接口实现类。

本实施例中,该扫描单元可以java反射机制扫描带有命令注解的接口实现类,将符合规则的接口实现类以键值对的方式缓存到命令池中。该扫描单元可以采用java反射机制来实现。

进一步的,所述创建模块10,还用于:

将接口实现类的实例缓存至命令池中。

本实施例中,该命令池可以缓存多个接口实现类的实例,形成包含有多个接口实现类的实例集合,以方便用户的调用,实现不同的功能操作。用户通过适配器可以输入动态加载命令,在输入动态加载命令的命令名称与命令注解匹配成功时,可以调用与该命令注解对应的接口实现类的实例完成相应的功能操作,并返回执行后的结果。

以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是在本发明的发明构思下,利用本发明说明书及附图内容所作的等效结构变换,或直接/间接运用在其他相关的技术领域均包括在本发明的专利保护范围内。

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