[发明专利]一种介入对象内部行为的方法及相关装置在审
申请号: | 201711403098.5 | 申请日: | 2017-12-22 |
公开(公告)号: | CN107977470A | 公开(公告)日: | 2018-05-01 |
发明(设计)人: | 陈瑞 | 申请(专利权)人: | 陈瑞 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 430000*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 介入 对象 内部 行为 方法 相关 装置 | ||
技术领域
本发明属于计算机技术领域,具体为一种介入对象内部行为的方法及相关装置。
背景技术
对象关系映射(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)的值等。本发明仅涉及对象内部行为。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于陈瑞,未经陈瑞许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711403098.5/2.html,转载请声明来源钻瓜专利网。