当前位置: 首页 > 专利查询>陈瑞专利>正文

一种介入对象内部行为的方法及相关装置制造方法及图纸

技术编号:17837719 阅读:39 留言:0更新日期:2018-05-03 19:21
本发明专利技术属于计算机技术领域,公开了一种介入对象内部行为的方法及相关装置,利用行为触发器介入对象内部行为,在内部行为开始之前或结束之后执行额外动作。具体方法步骤为:指定被介入对象的类型,同时指明需要介入的行为及其触发器;实现介入者;定义介入接口;自动生成派生代理类;实例化派生代理类;经由介入接口将介入者注入对象内部。使用此方法可以在不破坏封装性原则的前提下介入对象内部行为,并进一步实现对象属性更改跟踪和关联延迟加载。

Method and device for intervening internal behavior of objects

The invention belongs to the field of computer technology, and discloses a method and related device for the internal behavior of the intervening object, and the behavior of the object is intervened by the behavioral trigger, and the extra action is executed before or after the internal behavior begins. The specific steps are to specify the type of the intervened object, at the same time, to specify the behavior and trigger of the intervention; to implement the intervener; to define the intervention interface; to automatically generate the derivative agent class; to instantiate the derivative agent class; to inject the intervener into the object via the intervention interface. Using this method, the internal behavior of the object can be intervened without destroying the encapsulation principle, and the object attribute change tracking and association delay loading can be further implemented.

【技术实现步骤摘要】
一种介入对象内部行为的方法及相关装置
本专利技术属于计算机
,具体为一种介入对象内部行为的方法及相关装置。
技术介绍
对象关系映射(ORM)是指在对象模型与关系模型之间实施双向映射。在将对象映射为关系数据时为了有针对性地修改关系字段需要知道对象的哪些属性(Attribute)发生过修改,即更改跟踪;在将关系数据映射为对象时,为提升性能通常不是在加载对象时随之加载其关联,而是延后到对象活动期间关联被访问时才加载,即延迟加载。作为独立于具体业务系统的第三方ORM程序,实现更改跟踪和延迟加载面临着一个障碍,即由于对象系统在设计时会遵循面向对象的封装性原则,修改属性和访问关联均属于对象内部行为,外部的ORM程序是无法感知这些行为的。因此,必须专利技术一种介入对象内部行为的方法,以便ORM程序可以在不破坏封装性原则的前提下捕获对象的内部行为。
技术实现思路
专利技术一种介入对象内部行为的方法,以便处于对象系统外部的ORM程序可以在不破坏面向对象封装性原则的前提下介入对象内部行为,从而实现对象属性更改跟踪和关联延迟加载。所采用的技术方案如下。1.一种介入对象内部行为的方法,其具体方法步骤如下:作为输入参数,指定被介入对象的类型,同时指明需要介入的行为及其触发器(一个或多个),如果多个行为共用一个触发器,还需指明这些行为的介入优先级;实现介入者;定义介入接口;自动生成派生代理类;实例化派生代理类;经由介入接口将介入者注入对象内部。进一步地,所述行为触发器可以为以下三种类型:(1)对象的公有方法(Public-Method);(2)公有的属性get访问器(Public-Property-getter);(3)公有的属性set访问器(Public-Property-setter)。进一步地,所述派生代理类应当实现所述介入接口,并按以下步骤重写行为触发器:前置介入调用;调用原始类型定义的触发器逻辑;后置介入调用。进一步地,所述介入调用,其特征在于它是按如下步骤生成的调用清单:按触发器对第一步输入的介入行为进行分类汇总,每一个触发器对应一个或多个行为;按介入优先级对介入行为从高到低排序;顺次对每一个行为调用介入者定义的介入动作,如果定义了多个介入动作,则按定义顺序调用。2.一种关联延迟加载装置,包含:关联加载器作为介入者,负责从数据库中加载关联;代理生成单元,负责生成派生代理类并将其注册到对象管理单元;对象管理单元,负责实例化派生代理类以创建对象,并将关联加载器作为介入者经由介入接口注入到对象内部;装置接口,一方面负责接收装置使用者输入的参数并将其转发给代理生成单元;另一方面负责接收使用者的委托,请求对象管理单元创建对象并将对象返回给使用者。进一步地,所述派生代理类对关联加载器实施前置介入调用。3.一种属性更改跟踪装置。根据所述关联延迟加载装置,将其包含的关联加载器替换为用于记录对象属性更改的更改跟踪器,同时将派生代理类对其前置介入调用改为后置介入调用,即可得到一种属性更改跟踪装置。本专利技术的有益效果是,在不破坏面向对象封装性原则的前提下,外部程序可以在对象内部行为之前或之后执行介入动作,从而实现关联延迟加载和属性更改跟踪,明显提升ORM程序的性能。附图说明图1是本专利技术方法中介入对象内部行为的原理示意图。图2是本专利技术实施例提供的一种关联延迟加载装置。图3是本专利技术实施例提供的一种属性更改跟踪装置。具体实施方式以下结合本专利技术原理附图和实施例对本专利技术作进一步描述,实施例的描述仅为便于理解和应用本专利技术,而非对本专利技术保护的限制。原理介绍:从作用效果上看,对象行为可以分为两种,一种是会对其它对象产生影响的行为,如向其它对象发出调用消息、引发事件等等。另一种是作用效果仅限于其自身内部,外界无法感知到的行为,称为内部行为,如访问某个关联、修改某个属性(Attribute)的值等。本专利技术仅涉及对象内部行为。虽然对象内部行为外界无法感知,但内部行为都是在外界触发下发生的。外界触发对象行为必须经由对象公开的方法或属性访问器来实施,这些方法和属性访问器称为对象行为触发器。本专利技术即利用行为触发器介入对象内部行为,在内部行为开始之前或结束之后执行额外动作。该额外动作称为介入动作,如果在对象行为开始前执行则称为前置介入动作,在行为结束后执行则称为后置介入动作。具体原理如图1所示。实施例1本专利技术以图1所示的原理为基础,创立了一套方法用于介入对象内部行为,在行为之前或之后执行介入动作,具体实现步骤如下:第一步,作为输入参数,指定被介入对象的类型,同时指明需要介入的行为及其触发器(一个或多个),如果多个行为共用一个触发器,还需指明这些行为的介入优先级。数据结构定义如下:structIntervenedBehavior{stringbehaviorId;//要介入的行为的识别标识BehaviorTrigger[]triggers;//行为触发器数组bytepriority;//介入优先级},其中,BehaviorTrigger为表示行为触发器的数据结构,定义如下:structBehaviorTrigger{stringname;//触发器名称,即方法或属性访问顺的名称bytetype;//触发器类型,0表示方法,1表示get访问器,2表示set访问器}。行为触发器可以为以下三种类型:(1)对象的公有方法(Public-Method);(2)公有的属性get访问器(Public-Property-getter);(3)公有的属性set访问器(Public-Property-setter)。第二步,实现介入者。介入者是指执行具体介入动作的程序模块或构件,根据实际应用场景可定义一个或多个介入动作。例如,在ORM场景中的介入者可按如下方式实现:classIIntervener{voidTraceChange(objectobj,stringattrName){//记录属性变更}voidLoadAssociation(objectobj,stringassoName){//从数据库加载关联},其中,TraceChange为后置介入动作,LoadAssociation为前置介入动作。第三步,定义介入接口,该接口供对象管理程序将介入者注入到对象内部。该接口定义如下:InterfaceIIntervene{voidRegisterIntervener(objectintervener);}第四步,自动生成派生代理类,该代理类继承自对象的原始类型,并实现上述介入接口。该代理类需要重写(override)第一步所述的行为触发器,重写逻辑如下:首先,前置介入调用;然后,调用原始类型定义的触发器逻辑;最后,后置介入调用。所述前置介入调用和后置介入调用可能不止一次调用,而是按优先级排序的调用清单,其生成方法如下:首先,按触发器对第一步输入的所有IntervenedBehavior进行分类汇总,每一个触发器对应一个或多个行为,每个行为按其介入优先级从高到低排序,数据结构如下:structTriggerToBehavior{BehaviorTriggertrigger;//触发器string[]behaviorIds;//行为识别标识构成的有序数组};然后,顺次对behaviorIds中本文档来自技高网...
一种介入对象内部行为的方法及相关装置

【技术保护点】
一种介入对象内部行为的方法,其特征在于包含以下步骤:作为输入参数,指定被介入对象的类型,同时指明需要介入的行为及其触发器,如果多个行为共用一个触发器,还需指明这些行为的介入优先级;实现介入者;定义介入接口;自动生成派生代理类;实例化派生代理类;经由介入接口将介入者注入对象内部。

【技术特征摘要】
1.一种介入对象内部行为的方法,其特征在于包含以下步骤:作为输入参数,指定被介入对象的类型,同时指明需要介入的行为及其触发器,如果多个行为共用一个触发器,还需指明这些行为的介入优先级;实现介入者;定义介入接口;自动生成派生代理类;实例化派生代理类;经由介入接口将介入者注入对象内部。2.如权利要求1所述的行为触发器,其特征在于可以定义三种类型的触发器,即:Public-Method触发器;Public-Property-getter触发器;Public-Property-setter触发器。3.如权利要求1所述的派生代理类,其特征在于实现了所述介入接口。4.如权利要求1所述的派生代理类,其特征还在于按以下步骤重写行为触发器:前置介入调用;调用原始类型定义的触发器逻辑;后置介入调用。5.如权利要求4所述的介入调用,其特征在于它是按如下步骤生成的调用清单:按触发器对输入的介入行为进行分类汇总...

【专利技术属性】
技术研发人员:陈瑞
申请(专利权)人:陈瑞
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1