CN112256358A - 一种对象控制方法及装置 - Google Patents
一种对象控制方法及装置 Download PDFInfo
- Publication number
- CN112256358A CN112256358A CN202011130608.8A CN202011130608A CN112256358A CN 112256358 A CN112256358 A CN 112256358A CN 202011130608 A CN202011130608 A CN 202011130608A CN 112256358 A CN112256358 A CN 112256358A
- Authority
- CN
- China
- Prior art keywords
- party
- depended
- phase
- action
- called
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
Abstract
本申请提供一种对象控制方法及装置,接收针对第一对象和第二对象执行目标功能的第一请求,第一对象和第二对象的依赖关系为至少一个对象依赖另一个对象;响应第一请求,确定第一对象和第二对象中的依赖方和被依赖方,被依赖方的运行阶段包括第一运行阶段和第二运行阶段,被依赖方的第一运行阶段用于使得依赖方在由宿主程序调用时可正常调用;通过宿主程序调用被依赖方的第一运行阶段,在被依赖方的第一运行阶段完成调用后调用被依赖方的第二运行阶段和依赖方,从而根据依赖关系在依赖方调用前调用被依赖方的第一运行阶段,使得所依赖的动作优先调用,保证对象的正常调用,以解决双向依赖和单向依赖问题,提高通用性。
Description
技术领域
本申请属于设备控制技术领域,尤其涉及一种对象控制方法及装置。
背景技术
在宿主程序运行过程中会调用对象等对象,宿主程序调用的对象在执行目标功能时依赖其他对象,或者多个对象在执行相同的目标功能时双向依赖,例如宿主程序停止时会调用第一对象和第二对象的停止方法,第一对象和第二对象在执行停止功能时双向依赖,那么无论采用何种次序,都会由于一个对象停止而导致另一个对象不能正常运行。
针对这一情况,目前针对双向依赖的第一对象和第二对象,可将第一对象和第二对象合并成一个对象,或者修改第一对象和第二对象使第一对象和第二对象不存在依赖,或者修改第一对象和第二对象使第一对象和第二对象改成单向依赖,即第一对象和第二对象中一个对象依赖另一个对象,但是上述修改方式可能仅适用部分对象,对于其他不适用对象仍会存在因依赖问题导致无法正常使用的问题。
发明内容
有鉴于此,本申请的目的在于提供一种对象控制方法及装置,用于解决对象之间的依赖问题,使得对象之间的依赖关系无论是双向依赖还是单向依赖,都能够保证对象的正常调用,提高通用性。
一方面,本申请提供一种对象控制方法,所述方法包括:
接收针对第一对象和第二对象执行目标功能的第一请求,所述第一对象和所述第二对象由宿主程序调用,且所述第一对象和所述第二对象的依赖关系为:至少一个对象依赖另一个对象;
响应所述第一请求,确定所述第一对象和所述第二对象中的依赖方和被依赖方,所述被依赖方的运行阶段包括第一运行阶段和第二运行阶段,所述被依赖方的第一运行阶段用于使得所述依赖方在由所述宿主程序调用时可正常调用;
通过宿主程序调用所述被依赖方的第一运行阶段,在所述被依赖方的第一运行阶段完成调用后,通过所述宿主程序调用所述被依赖方的第二运行阶段和所述依赖方。
可选的,如果所述第一对象和所述第二对象的依赖关系为双向依赖,所述第一对象为所述第二对象的被依赖方,所述第二对象为所述第一对象的被依赖方;
所述通过宿主程序调用所述被依赖方的第一运行阶段,在所述被依赖方的第一运行阶段完成调用后,通过所述宿主程序调用所述被依赖方的第二运行阶段和所述依赖方包括:
通过所述宿主程序调用所述第一对象的第一运行阶段和所述第二对象的第一运行阶段,在所述第一对象的第一运行阶段和所述第二对象的第一运行阶段完成调用后,通过所述宿主程度调用所述第一对象的第二运行阶段和所述第二对象的第二运行阶段。
可选的,所述第一请求用于指示停止所述第一对象和所述第二对象;
所述第二对象的第一运行阶段用于指示调用所述第一对象的第一动作,所述第一动作为所述第二对象停止过程中依赖的动作;所述第一对象的第一运行阶段用于指示调用所述第二对象的第二动作,所述第二动作为所述第一对象停止过程中依赖的动作;
所述第一对象的第二运行阶段用于指示清理所述第一对象,所述第二对象的第二运行阶段用于指示清理所述第二对象。
可选的,所述第一请求用于指示启动所述第一对象和所述第二对象;
所述第一对象的第一运行阶段用于指示运行所述第一对象中被所述第二对象调用的第三动作;所述第二对象的第一运行阶段用于指示运行所述第二对象中被所述第一对象调用的第四动作;
所述第一对象的第二运行阶段用于指示调用所述第二对象的第五动作;所述第二对象的第二运行阶段用于指示调用所述第一对象的第六动作。
可选的,如果所述第一对象和所述第二对象的依赖关系为双向依赖,所述被依赖方的运行阶段包括第一运行阶段和第二运行阶段;
如果所述第一对象和所述第二对象的依赖关系为单向依赖,所述方法还包括:响应所述第一请求,确定所述第一对象和所述第二对象之间的调用顺序,根据所述调用顺序通过所述宿主程序调用所述第一对象和所述第二对象。
另一方面,本申请提供一种对象控制装置,所述装置包括:
接收单元,用于接收针对第一对象和第二对象执行目标功能的第一请求,所述第一对象和所述第二对象由宿主程序调用,且所述第一对象和所述第二对象的依赖关系为:至少一个对象依赖另一个对象;
响应单元,用于响应所述第一请求,确定所述第一对象和所述第二对象中的依赖方和被依赖方,所述被依赖方的运行阶段包括第一运行阶段和第二运行阶段,所述被依赖方的第一运行阶段用于使得所述依赖方在由所述宿主程序调用时可正常调用;
调用单元,用于通过宿主程序调用所述被依赖方的第一运行阶段,在所述被依赖方的第一运行阶段完成调用后,通过所述宿主程序调用所述被依赖方的第二运行阶段和所述依赖方。
可选的,如果所述第一对象和所述第二对象的依赖关系为双向依赖,所述第一对象为所述第二对象的被依赖方,所述第二对象为所述第一对象的被依赖方;
所述调用单元,用于通过所述宿主程序调用所述第一对象的第一运行阶段和所述第二对象的第一运行阶段,在所述第一对象的第一运行阶段和所述第二对象的第一运行阶段完成调用后,通过所述宿主程度调用所述第一对象的第二运行阶段和所述第二对象的第二运行阶段。
可选的,所述第一请求用于指示停止所述第一对象和所述第二对象;
所述第二对象的第一运行阶段用于指示调用所述第一对象的第一动作,所述第一动作为所述第二对象停止过程中依赖的动作;所述第一对象的第一运行阶段用于指示调用所述第二对象的第二动作,所述第二动作为所述第一对象停止过程中依赖的动作;
所述第一对象的第二运行阶段用于指示清理所述第一对象,所述第二对象的第二运行阶段用于指示清理所述第二对象;
或者,
所述第一请求用于指示启动所述第一对象和所述第二对象;
所述第一对象的第一运行阶段用于指示运行所述第一对象中被所述第二对象调用的第三动作;所述第二对象的第一运行阶段用于指示运行所述第二对象中被所述第一对象调用的第四动作;
所述第一对象的第二运行阶段用于指示调用所述第二对象的第五动作;所述第二对象的第二运行阶段用于指示调用所述第一对象的第六动作。
可选的,如果所述第一对象和所述第二对象的依赖关系为双向依赖,所述被依赖方的运行阶段包括第一运行阶段和第二运行阶段;
所述响应单元,还用于如果所述第一对象和所述第二对象的依赖关系为单向依赖,响应所述第一请求,确定所述第一对象和所述第二对象之间的调用顺序;
所述调用单元,还用于根据所述调用顺序通过所述宿主程序调用所述第一对象和所述第二对象。
再一方面,本申请提供一种电子设备,包括:
处理器;
存储器,用于存储可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行上述对象控制方法。
再一方面,本申请提供一种存储介质,所述存储介质中存储有计算机程序代码,所述计算机程序代码被运行时执行上述对象控制方法。
上述对象控制方法及装置,接收针对第一对象和第二对象执行目标功能的第一请求,第一对象和第二对象由宿主程序调用,且第一对象和第二对象的依赖关系为:至少一个对象依赖另一个对象;响应第一请求,确定第一对象和第二对象中的依赖方和被依赖方,被依赖方的运行阶段包括第一运行阶段和第二运行阶段,被依赖方的第一运行阶段用于使得依赖方在由宿主程序调用时可正常调用;通过宿主程序调用被依赖方的第一运行阶段,在被依赖方的第一运行阶段完成调用后,通过宿主程序调用被依赖方的第二运行阶段和依赖方,从而根据被依赖方和依赖方之间的依赖关系,在依赖方被调用之前调用被依赖方的第一运行阶段,使得所依赖的动作优先调用,那么在被调用过程中能够使用其所依赖的动作,保证正常调用,这样无论依赖关系是双向依赖还是单向依赖,通过这种方式都能够解决,提高通用性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种对象控制方法的流程图;
图2是本申请实施例提供的另一种对象控制方法的流程图;
图3是本申请实施例提供的一种对象控制装置的结构示意图。
具体实施方式
目前宿主程序调用的对象之间可能存在依赖关系,这种依赖关系可能是单向依赖或双向依赖,双向依赖是两个对象中任一对象的调用都会依赖另一对象,以宿主程序停止对象运行为例进行说明,宿主程序停止对象A和对象B的运行,过程如下:
宿主程序会逐个调用对象的Stop方法,无论宿主程序先调用哪个,再调用另一个对象时都会遇到先调用对象已停止而执行Fa/Fb失败,导致对象无法正常调用。为解决这一问题,本申请实施例提供一种对象控制方法及装置,在依赖方被调用之前调用被依赖方的第一运行阶段,使得所依赖的动作优先调用,那么在被调用过程中能够使用其所依赖的动作,保证正常调用,这样无论依赖关系是双向依赖还是单向依赖,通过这种方式都能够解决,提高通用性。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参见图1,其示出了本申请实施例提供的一种对象控制方法的流程图,可以包括以下步骤:
101:接收针对第一对象和第二对象执行目标功能的第一请求,第一对象和第二对象由宿主程序调用,且第一对象和第二对象的依赖关系为:至少一个对象依赖另一个对象。
在本实施例中,第一对象和第二对象的依赖关系可以是单向依赖和双向依赖中的至少一种,其中单向依赖是第一对象和第二对象中的一个对象依赖另一个对象,如第一对象依赖第二对象,双向依赖是第一对象依赖第二对象,且第二对象也依赖第一对象,是一个互相依赖的关系。在本实施例中以第一对象和第二对象为例进行说明,本实施例还可以适用于至少三个对象,宿主程序对三个对象的调用过程与宿主程序对两个对象的调用过程相似,都是基于依赖关系进行调用,对此本实施例不再阐述。
102:响应第一请求,确定第一对象和第二对象中的依赖方和被依赖方,被依赖方的运行阶段包括第一运行阶段和第二运行阶段,被依赖方的第一运行阶段用于使得依赖方在由宿主程序调用时可正常调用,以将正常调用过程中依赖的动作分离出来,保证依赖方和被依赖方的正常调用。
在本实施例中,第一运行阶段中嵌入的动作是被依赖方的动作,被依赖方的动作会在依赖方调用过程中被依赖方所调用,如第一请求指示停止对象,第一运行阶段中嵌入的动作是依赖方停止过程中所依赖(或调用)的被依赖方的动作,如果第一请求指示启动对象,第一运行阶段中嵌入的动作也是被依赖方的动作,即准备好依赖方启动过程中所调用的被依赖方的动作。
第二运行阶段会因第一请求的类型不同而不同,例如第一请求指示停止对象,第二运行阶段则用于指示清理依赖方,如释放启动和运行过程中申请的资源等,如果第一请求指示启动对象,第二运行阶段则调用其他对象的动作,如调用被依赖方的动作。
仍以第一对象和第二对象的依赖关系为双向依赖,第一对象为第二对象的被依赖方,第二对象为第一对象的被依赖方。例如第一对象为上述对象A,第二对象为上述对象B,对象A和对象B在停止过程中,其运行阶段包括的第一运行阶段和第二运行阶段如下所示:
上述示出了对象A依赖对象B,对象A为依赖方,对象B为被依赖方,将被依赖方B的动作——方法Fb嵌入在第一运行阶段PreStop(),第二运行阶段Stop()用于对依赖方A进行清理。
上述示出了对象B依赖对象A,对象B为依赖方,对象A为被依赖方,将被依赖方A的动作——方法Fa嵌入在第一运行阶段PreStop(),第二运行阶段Stop()用于对依赖方B进行清理。
对象A和对象B在启动过程中,其运行阶段包括的第一运行阶段和第二运行阶段如下所示:
上述示出了对象A和对象B的互相依赖,在第一运行阶段对象B依赖对象A,对象A为被依赖方,对象B为依赖方,将被依赖方A的动作——Fc嵌入在第一运行阶段PreStart(),在第一运行阶段PreStart()完成准备以使对象B启动过程中能调用对象A所依赖的方法Fc,第二运行阶段Start()中A变为依赖方,B为被依赖方,第二运行阶段Start()中用于调用依赖方A的被依赖方B的动作,即被依赖方B在其PreStart()完成准备的方法Fd。
上述示出了对象A和对象B的互相依赖,在第一运行阶段对象B为被依赖方,对象A为依赖方,将被依赖方B的动作——Fd嵌入在第一运行阶段PreStart(),在第一运行阶段PreStart()完成准备以使对象A启动过程中能调用对象B所依赖的方法Fd,第二运行阶段Start()中B变为依赖方,A为被依赖方,第二运行阶段Start()中用于调用依赖方B的被依赖方A的动作,即被依赖方A在其PreStart()完成准备的方法Fc。
基于上述示例可知,在第一对象和第二对象之间的依赖关系为双向依赖的情况下,如果第一请求用于指示停止第一对象和第二对象,第二对象的第一运行阶段用于指示调用第一对象的第一动作,第一动作为第二对象停止过程中依赖的动作;第一对象的第一运行阶段用于指示调用第二对象的第二动作,第二动作为第一对象停止过程中依赖的动作。第一对象的第二运行阶段用于指示清理第一对象,第二对象的第二运行阶段用于指示清理第二对象。
如果第一请求用于指示启动第一对象和第二对象,第一对象的第一运行阶段用于指示运行第一对象中被第二对象调用的第三动作;第二对象的第一运行阶段用于指示运行第二对象中被第一对象调用的第四动作。第一对象的第二运行阶段用于指示调用第二对象的第五动作。第二对象的第二运行阶段用于指示调用第一对象的第六动作。
对于第一动作至第六动作来说,第一动作至第六动作具体为何种动作视第一对象和第二对象的依赖而定,本实施例不进行限定。
103:通过宿主程序调用被依赖方的第一运行阶段,在被依赖方的第一运行阶段完成调用后,通过宿主程序调用被依赖方的第二运行阶段和依赖方,在依赖方被调用之前调用被依赖方的第一运行阶段,使得所依赖的动作优先调用。
在本实施例中,如果第一对象和第二对象的依赖关系为双向依赖,第一对象为第二对象的被依赖方,第二对象为第一对象的被依赖方;通过宿主程序对第一对象和第二对象的调用过程如下:
通过宿主程序调用第一对象的第一运行阶段和第二对象的第一运行阶段,在第一对象的第一运行阶段和第二对象的第一运行阶段完成调用后,通过宿主程度调用第一对象的第二运行阶段和第二对象的第二运行阶段,以将第一对象和第二对象所依赖的动作先调用,使宿主程序在调用第一对象和第二对象过程中可以保证两个对象的正常调用。
上述对象控制方法,接收针对第一对象和第二对象执行目标功能的第一请求,第一对象和第二对象由宿主程序调用,且第一对象和第二对象的依赖关系为:至少一个对象依赖另一个对象;响应第一请求,确定第一对象和第二对象中的依赖方和被依赖方,被依赖方的运行阶段包括第一运行阶段和第二运行阶段,被依赖方的第一运行阶段用于使得依赖方在由宿主程序调用时可正常调用;通过宿主程序调用被依赖方的第一运行阶段,在被依赖方的第一运行阶段完成调用后,通过宿主程序调用被依赖方的第二运行阶段和依赖方,从而根据被依赖方和依赖方之间的依赖关系,在依赖方被调用之前调用被依赖方的第一运行阶段,使得所依赖的动作优先调用,那么在被调用过程中能够使用其所依赖的动作,保证正常调用,这样无论依赖关系是双向依赖还是单向依赖,通过这种方式都能够解决,提高通用性。
如果第一对象和第二对象的依赖关系为双向依赖,任一个被依赖方的运行阶段包括第一运行阶段和第二运行阶段,以使得具有双向依赖关系的每个对象都能够正常调用。
如果第一对象和第二对象的依赖关系为单向依赖,如第一对象依赖第二对象,则将第二对象的运行阶段划分成第一运行阶段和第二运行阶段;或者还可以采用限定第一对象和第二对象之间的调用顺序来解决依赖问题,相对应的,本申请实施例提供的对象控制方法的另一流程如图2所示,还可以包括以下步骤:
104:如果第一对象和第二对象的依赖关系为单向依赖,响应第一请求,确定第一对象和第二对象之间的调用顺序,根据调用顺序通过宿主程序调用第一对象和第二对象。
例如第一请求指示停止第一对象和第二对象,第一对象依赖第二对象,则调用顺序指示依赖方先于被依赖方被宿主程序调用,这样在依赖方停止之前,被依赖方仍处于可用状态,依赖方能够调用被依赖方的动作,使得依赖方能够正常停止;如果第一请求指示启动第一对象和第二对象,第一对象依赖第二对象,则调用顺序指示被依赖方先于依赖方被宿主程序调用,这样在依赖方启动之前,被依赖方的动作已经被启动,使得依赖方能够正常启动。
对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
与上述方法实施例相对应,本申请实施例还提供一种对象控制装置,其结构如图3所示,可以包括:接收单元10、响应单元20和调用单元30。
接收单元10,用于接收针对第一对象和第二对象执行目标功能的第一请求,第一对象和第二对象由宿主程序调用,且第一对象和第二对象的依赖关系为:至少一个对象依赖另一个对象。
在本实施例中,第一对象和第二对象的依赖关系可以是单向依赖和双向依赖中的至少一种,其中单向依赖是第一对象和第二对象中的一个对象依赖另一个对象,如第一对象依赖第二对象,双向依赖是第一对象依赖第二对象,且第二对象也依赖第一对象,是一个互相依赖的关系。在本实施例中以第一对象和第二对象为例进行说明,本实施例还可以适用于至少三个对象,宿主程序对三个对象的调用过程与宿主程序对两个对象的调用过程相似,都是基于依赖关系进行调用,对此本实施例不再阐述。
响应单元20,用于响应第一请求,确定第一对象和第二对象中的依赖方和被依赖方,被依赖方的运行阶段包括第一运行阶段和第二运行阶段,被依赖方的第一运行阶段用于使得依赖方在由宿主程序调用时可正常调用,以将正常调用过程中依赖的动作分离出来,保证依赖方和被依赖方的正常调用。
在本实施例中,第一运行阶段中嵌入的动作是被依赖方的动作,被依赖方的动作会在依赖方调用过程中被依赖方所调用,如第一请求指示停止对象,第一运行阶段中嵌入的动作是依赖方停止过程中所依赖(或调用)的被依赖方的动作,如果第一请求指示启动对象,第一运行阶段中嵌入的动作也是被依赖方的动作,即准备好依赖方启动过程中所调用的被依赖方的动作。
第二运行阶段会因第一请求的类型不同而不同,例如第一请求指示停止对象,第二运行阶段则用于指示清理依赖方,如释放启动和运行过程中申请的资源等,如果第一请求指示启动对象,第二运行阶段则调用其他对象的动作,如调用被依赖方的动作。
例如第一请求用于指示停止第一对象和第二对象,相对应的第二对象的第一运行阶段用于指示调用第一对象的第一动作,第一动作为第二对象停止过程中依赖的动作;第一对象的第一运行阶段用于指示调用第二对象的第二动作,第二动作为第一对象停止过程中依赖的动作。第一对象的第二运行阶段用于指示清理第一对象,第二对象的第二运行阶段用于指示清理第二对象。
如果第一请求用于指示启动第一对象和第二对象,相对应的第一对象的第一运行阶段用于指示运行第一对象中被第二对象调用的第三动作;第二对象的第一运行阶段用于指示运行第二对象中被第一对象调用的第四动作。第一对象的第二运行阶段用于指示调用第二对象的第五动作,第二对象的第二运行阶段用于指示调用第一对象的第六动作。
调用单元30,用于通过宿主程序调用被依赖方的第一运行阶段,在被依赖方的第一运行阶段完成调用后,通过宿主程序调用被依赖方的第二运行阶段和依赖方。
在本实施例中,如果第一对象和第二对象的依赖关系为双向依赖,第一对象为第二对象的被依赖方,第二对象为第一对象的被依赖方;调用单元30通过宿主程序对第一对象和第二对象的调用过程如下:
通过宿主程序调用第一对象的第一运行阶段和第二对象的第一运行阶段,在第一对象的第一运行阶段和第二对象的第一运行阶段完成调用后,通过宿主程度调用第一对象的第二运行阶段和第二对象的第二运行阶段,以将第一对象和第二对象所依赖的动作先调用,使宿主程序在调用第一对象和第二对象过程中可以保证两个对象的正常调用。
上述对象控制装置,接收针对第一对象和第二对象执行目标功能的第一请求,第一对象和第二对象由宿主程序调用,且第一对象和第二对象的依赖关系为:至少一个对象依赖另一个对象;响应第一请求,确定第一对象和第二对象中的依赖方和被依赖方,被依赖方的运行阶段包括第一运行阶段和第二运行阶段,被依赖方的第一运行阶段用于使得依赖方在由宿主程序调用时可正常调用;通过宿主程序调用被依赖方的第一运行阶段,在被依赖方的第一运行阶段完成调用后,通过宿主程序调用被依赖方的第二运行阶段和依赖方,从而根据被依赖方和依赖方之间的依赖关系,在依赖方被调用之前调用被依赖方的第一运行阶段,使得所依赖的动作优先调用,那么在被调用过程中能够使用其所依赖的动作,保证正常调用,这样无论依赖关系是双向依赖还是单向依赖,通过这种方式都能够解决,提高通用性。
如果第一对象和第二对象的依赖关系为双向依赖,任一个被依赖方的运行阶段包括第一运行阶段和第二运行阶段,以使得具有双向依赖关系的每个对象都能够正常调用。
如果第一对象和第二对象的依赖关系为单向依赖,如第一对象依赖第二对象,则将第二对象的运行阶段划分成第一运行阶段和第二运行阶段;或者还可以采用限定第一对象和第二对象之间的调用顺序来解决依赖问题,相对应的,上述响应单元20,还用于如果第一对象和第二对象的依赖关系为单向依赖,响应第一请求,确定第一对象和第二对象之间的调用顺序;调用单元30,还用于根据调用顺序通过宿主程序调用第一对象和第二对象。
例如第一请求指示停止第一对象和第二对象,第一对象依赖第二对象,则调用顺序指示依赖方先于被依赖方被宿主程序调用,这样在依赖方停止之前,被依赖方仍处于可用状态,依赖方能够调用被依赖方的动作,使得依赖方能够正常停止;如果第一请求指示启动第一对象和第二对象,第一对象依赖第二对象,则调用顺序指示被依赖方先于依赖方被宿主程序调用,这样在依赖方启动之前,被依赖方的动作已经被启动,使得依赖方能够正常启动。
本申请实施例还提供一种电子设备,包括:处理器和存储器。
存储器,用于存储可执行指令;处理器配置为经由执行可执行指令来执行上述对象控制方法。
本申请实施例还提供一种存储介质,存储介质中存储有计算机程序代码,计算机程序代码被运行时执行上述对象控制方法。
需要说明的是,本说明书中的各个实施例可以采用递进的方式描述、本说明书中各实施例中记载的特征可以相互替换或者组合,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (11)
1.一种对象控制方法,其特征在于,所述方法包括:
接收针对第一对象和第二对象执行目标功能的第一请求,所述第一对象和所述第二对象由宿主程序调用,且所述第一对象和所述第二对象的依赖关系为:至少一个对象依赖另一个对象;
响应所述第一请求,确定所述第一对象和所述第二对象中的依赖方和被依赖方,所述被依赖方的运行阶段包括第一运行阶段和第二运行阶段,所述被依赖方的第一运行阶段用于使得所述依赖方在由所述宿主程序调用时可正常调用;
通过宿主程序调用所述被依赖方的第一运行阶段,在所述被依赖方的第一运行阶段完成调用后,通过所述宿主程序调用所述被依赖方的第二运行阶段和所述依赖方。
2.根据权利要求1所述的方法,其特征在于,如果所述第一对象和所述第二对象的依赖关系为双向依赖,所述第一对象为所述第二对象的被依赖方,所述第二对象为所述第一对象的被依赖方;
所述通过宿主程序调用所述被依赖方的第一运行阶段,在所述被依赖方的第一运行阶段完成调用后,通过所述宿主程序调用所述被依赖方的第二运行阶段和所述依赖方包括:
通过所述宿主程序调用所述第一对象的第一运行阶段和所述第二对象的第一运行阶段,在所述第一对象的第一运行阶段和所述第二对象的第一运行阶段完成调用后,通过所述宿主程度调用所述第一对象的第二运行阶段和所述第二对象的第二运行阶段。
3.根据权利要求2所述的方法,其特征在于,所述第一请求用于指示停止所述第一对象和所述第二对象;
所述第二对象的第一运行阶段用于指示调用所述第一对象的第一动作,所述第一动作为所述第二对象停止过程中依赖的动作;所述第一对象的第一运行阶段用于指示调用所述第二对象的第二动作,所述第二动作为所述第一对象停止过程中依赖的动作;
所述第一对象的第二运行阶段用于指示清理所述第一对象,所述第二对象的第二运行阶段用于指示清理所述第二对象。
4.根据权利要求2所述的方法,其特征在于,所述第一请求用于指示启动所述第一对象和所述第二对象;
所述第一对象的第一运行阶段用于指示运行所述第一对象中被所述第二对象调用的第三动作;所述第二对象的第一运行阶段用于指示运行所述第二对象中被所述第一对象调用的第四动作;
所述第一对象的第二运行阶段用于指示调用所述第二对象的第五动作;所述第二对象的第二运行阶段用于指示调用所述第一对象的第六动作。
5.根据权利要求1所述的方法,其特征在于,如果所述第一对象和所述第二对象的依赖关系为双向依赖,所述被依赖方的运行阶段包括第一运行阶段和第二运行阶段;
如果所述第一对象和所述第二对象的依赖关系为单向依赖,所述方法还包括:响应所述第一请求,确定所述第一对象和所述第二对象之间的调用顺序,根据所述调用顺序通过所述宿主程序调用所述第一对象和所述第二对象。
6.一种对象控制装置,其特征在于,所述装置包括:
接收单元,用于接收针对第一对象和第二对象执行目标功能的第一请求,所述第一对象和所述第二对象由宿主程序调用,且所述第一对象和所述第二对象的依赖关系为:至少一个对象依赖另一个对象;
响应单元,用于响应所述第一请求,确定所述第一对象和所述第二对象中的依赖方和被依赖方,所述被依赖方的运行阶段包括第一运行阶段和第二运行阶段,所述被依赖方的第一运行阶段用于使得所述依赖方在由所述宿主程序调用时可正常调用;
调用单元,用于通过宿主程序调用所述被依赖方的第一运行阶段,在所述被依赖方的第一运行阶段完成调用后,通过所述宿主程序调用所述被依赖方的第二运行阶段和所述依赖方。
7.根据权利要求6所述的装置,其特征在于,如果所述第一对象和所述第二对象的依赖关系为双向依赖,所述第一对象为所述第二对象的被依赖方,所述第二对象为所述第一对象的被依赖方;
所述调用单元,用于通过所述宿主程序调用所述第一对象的第一运行阶段和所述第二对象的第一运行阶段,在所述第一对象的第一运行阶段和所述第二对象的第一运行阶段完成调用后,通过所述宿主程度调用所述第一对象的第二运行阶段和所述第二对象的第二运行阶段。
8.根据权利要求7所述的装置,其特征在于,所述第一请求用于指示停止所述第一对象和所述第二对象;
所述第二对象的第一运行阶段用于指示调用所述第一对象的第一动作,所述第一动作为所述第二对象停止过程中依赖的动作;所述第一对象的第一运行阶段用于指示调用所述第二对象的第二动作,所述第二动作为所述第一对象停止过程中依赖的动作;
所述第一对象的第二运行阶段用于指示清理所述第一对象,所述第二对象的第二运行阶段用于指示清理所述第二对象;
或者,
所述第一请求用于指示启动所述第一对象和所述第二对象;
所述第一对象的第一运行阶段用于指示运行所述第一对象中被所述第二对象调用的第三动作;所述第二对象的第一运行阶段用于指示运行所述第二对象中被所述第一对象调用的第四动作;
所述第一对象的第二运行阶段用于指示调用所述第二对象的第五动作;所述第二对象的第二运行阶段用于指示调用所述第一对象的第六动作。
9.根据权利要求6所述的装置,其特征在于,如果所述第一对象和所述第二对象的依赖关系为双向依赖,所述被依赖方的运行阶段包括第一运行阶段和第二运行阶段;
所述响应单元,还用于如果所述第一对象和所述第二对象的依赖关系为单向依赖,响应所述第一请求,确定所述第一对象和所述第二对象之间的调用顺序;
所述调用单元,还用于根据所述调用顺序通过所述宿主程序调用所述第一对象和所述第二对象。
10.一种电子设备,其特征在于,包括:
处理器;
存储器,用于存储可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行如权利要求1至5中任意一项所述的对象控制方法。
11.一种存储介质,其特征在于,所述存储介质中存储有计算机程序代码,所述计算机程序代码被运行时执行如权利要求1至5中任意一项所述的对象控制方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011130608.8A CN112256358A (zh) | 2020-10-21 | 2020-10-21 | 一种对象控制方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011130608.8A CN112256358A (zh) | 2020-10-21 | 2020-10-21 | 一种对象控制方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112256358A true CN112256358A (zh) | 2021-01-22 |
Family
ID=74263707
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011130608.8A Pending CN112256358A (zh) | 2020-10-21 | 2020-10-21 | 一种对象控制方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112256358A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5893106A (en) * | 1997-07-11 | 1999-04-06 | International Business Machines Corporation | Object oriented server process framework with interdependent-object creation |
US20180217886A1 (en) * | 2017-01-30 | 2018-08-02 | Microsoft Technology Licensing, Llc | Object-oriented remote procedure calls for browser applications |
CN110221820A (zh) * | 2019-04-23 | 2019-09-10 | 平安科技(深圳)有限公司 | spring框架泛型依赖注入方法、装置及计算机设备、存储介质 |
CN110221877A (zh) * | 2019-06-12 | 2019-09-10 | 北京字节跳动网络技术有限公司 | 一种应用程序的运行方法、装置、电子设备、及存储介质 |
CN110673801A (zh) * | 2019-09-29 | 2020-01-10 | 苏州浪潮智能科技有限公司 | 一种依赖对象的初始化操作方法及相关装置 |
CN110673887A (zh) * | 2019-08-15 | 2020-01-10 | 华为技术有限公司 | 应用程序启动方法、装置、终端设备及可读存储介质 |
-
2020
- 2020-10-21 CN CN202011130608.8A patent/CN112256358A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5893106A (en) * | 1997-07-11 | 1999-04-06 | International Business Machines Corporation | Object oriented server process framework with interdependent-object creation |
US20180217886A1 (en) * | 2017-01-30 | 2018-08-02 | Microsoft Technology Licensing, Llc | Object-oriented remote procedure calls for browser applications |
CN110221820A (zh) * | 2019-04-23 | 2019-09-10 | 平安科技(深圳)有限公司 | spring框架泛型依赖注入方法、装置及计算机设备、存储介质 |
CN110221877A (zh) * | 2019-06-12 | 2019-09-10 | 北京字节跳动网络技术有限公司 | 一种应用程序的运行方法、装置、电子设备、及存储介质 |
CN110673887A (zh) * | 2019-08-15 | 2020-01-10 | 华为技术有限公司 | 应用程序启动方法、装置、终端设备及可读存储介质 |
CN110673801A (zh) * | 2019-09-29 | 2020-01-10 | 苏州浪潮智能科技有限公司 | 一种依赖对象的初始化操作方法及相关装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7908521B2 (en) | Process reflection | |
JP5726212B2 (ja) | webアプリケーション等のサーバーアプリケーションのための仮想環境 | |
US7082555B2 (en) | Computer system dynamically adding and deleting software modules | |
JP5785564B2 (ja) | 拡張可能なアプリケーション仮想化サブシステム | |
JP4060322B2 (ja) | アプリケーション管理装置およびそのソフトウェアを格納した記憶媒体 | |
WO2019019643A1 (zh) | 应用程序热更新方法、装置、终端和存储介质 | |
WO2017185961A1 (zh) | 一种服务发现的处理方法及装置 | |
CN106909411B (zh) | 一种文件更新方法及装置 | |
JP2010522932A (ja) | インストールシーケンスのためのブックマークおよび構成ファイル | |
US7665065B2 (en) | Software termination method | |
KR20070034523A (ko) | 애플리케이션의 재런칭시의 애플리케이션 상태 히스토리정보를 이용한 방법, 소프트웨어 및 장치 | |
JP2009294712A (ja) | 優先度制御装置及び優先度制御方法 | |
US9892019B2 (en) | Use case driven stepping component automation framework | |
CN111352797A (zh) | 用于监视软件应用程序进程的系统和方法 | |
JPH0812616B2 (ja) | オペレーティングシステムカーネル用受動回復方法およびシステム | |
CN110737453A (zh) | 安全芯片的升级方法、装置及安全芯片 | |
CN112256358A (zh) | 一种对象控制方法及装置 | |
CN113672263A (zh) | 固件参数更新控制方法、装置及电子设备 | |
WO2009123343A1 (ja) | 競合分析装置、競合分析方法、及びプログラム | |
JP5458147B2 (ja) | イベント通知方法、プログラム、および装置 | |
US9727381B2 (en) | Image forming apparatus and resource management method | |
CN110286953B (zh) | 嵌入式系统的启动方法、装置、嵌入式设备及存储介质 | |
CN116339908A (zh) | 虚拟机启动方法、装置、计算机设备和存储介质 | |
WO2015027733A1 (zh) | 一种分布式java程序运行方法、装置和系统 | |
CN114816662A (zh) | 应用于Kubernetes的容器编排方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |