捐赠 | 广告 | 注册 | 发布 | 上传 | 关于我们    
  粤ICP备10103342号-1 DELPHI盒子 | 盒子文章 | 盒子问答悬赏 | 最新更新 | 盒子检索 | 下载中心 | 高级搜索    
  精品专区 | 繁體中文 | 奖励公告栏 | 直通车账号登陆 | 关闭GOOGLE广告 | 临时留言    
盒子资源分类
全部展开 - 全部合拢
Delphi AOP(Aspect Oriented Programming) Frame - MeAOP v0.5
关键字:DelphiAOP Featrure Aspect Oriented Programming MeAOP 代码注入
来 自:原创
平 台:Win9x,Win2k/XP/NT,Win2003 下载所需:0 火柴
深浅度:高级 完成时间:2006/5/14
发布者:riceball 发布时间:2006/5/14
编辑器:D7/D10 语  种:简体中文
分 类:对象 下载浏览:1319/16174
加入到我的收藏
下载错误报错
登陆以后才能下载
 用户名:
 密 码:
自动登陆(30天有效)
无图片
== 面向方面编程思想简介 ==
面向方面编程,正确的理解应该说是面向功能的一种编程方法。它作为对象建模的辅助,目的就是为了重用功能:
  1、将通用功能从不相关类之中分离出来;
  2、能够使得很多类共享一个功能,一旦功能发生变化,不必修改很多类,只要修改这个功能就可以了。

因此,我认为老外的定义并不妥当,故,我这里将其称之为 Feature 而不是 Aspect,也许说成是 Featrure Oriented Programming 更为恰当。

在我看来,它实现的核心思想就是对类(对象)的方法的拦劫和注入。

我的  AOP For Delphi Frame 是基于代码注入,核心也就是黑客的技能,对原始代码进行注入替换——通过对过程方法注入代码完成对方法的拦截处理!我对基于动态代理(对对象类进行包裹)的AOP形式不敢兴趣,这样性能太低,而代码注入则是速度最快的解决方案,内存开销也比动态代理小多了。

我希望我的AOP架构简单高效并且易于使用。随便提一句,我把我的AOP叫做MeAOP.

在MeAOP中,你不必去想什么joint, advise, cross-cut 等等莫名的概念。你只需要知道功能这个概念,
MeAOP的核心就是抽象出了定制功能类,你所做的开发就是围绕开发自己特有的功能类展开的。
你只要简单的调用 TMeCustomFeature 的类函数 AddTo 就可以将功能添加到你指定的类的方法上。 eg,
<code>
TMyFeature.AddTo(aClass, @aClass.aMethod, 'aMethod').
</code>

那么如何设计自己的功能类呢?
很简单,只需要在你的功能类中重载你需要拦截的位置的方法即可,如:BeforeExecute, AfterExecute 等等。
你的所有的功能类都应该从 TMeCustomFeature 派生.

注意:[Ver0.5] 现目前版本我只是实现了对于无参数的过程和方法(不包括有返回值函数)的支持。

<code>
  TMyFeature = class(TMeCustomFeature)
  protected
    {: 仅当返回为真才执行拦截的方法 MethodItem }
    { 如果你没有重载,它总是返回真.}
    function AllowExecute(Sender: TObject; MethodItem: TMeInterceptedMethodItem): Boolean;override;
    {: 在MethodItem被执行前被触发,发生在AllowExecute返回为真后 }
    procedure BeforeExecute(Sender: TObject; MethodItem: TMeInterceptedMethodItem);override;
    {: 在MethodItem被执行后被触发(即使MethodItem引发了异常也依然会被触发) }
    procedure AfterExecute(Sender: TObject; MethodItem: TMeInterceptedMethodItem);override;
    {: 执行MethodItem的过程中引发了异常后被触发。}
    procedure AfterException(Sender: TObject; MethodItem: TMeInterceptedMethodItem; E: Exception);override;
  end;
</code>

=== MeAOP 架构 ===
我的AOP 架构大致分为三层:
 1.底层核心:过程方法注入器: 提供最简单最轻巧的注入器(一个注入器大约仅占内存36个字节)
 2.中层核心:则是过程方法拦截器
    2.1. 只支持无参数的过程方法拦截器
    2.2. 支持带参数的过程方法拦截器
 3.上层核心:提供面向功能的编程类库,最终实现能够将很容易将新的功能附加到指定类的方法上。
Google
 
本站原创作品,未经作者许可,严禁任何方式转载;转载作品,如果侵犯了您的权益,请联系我们
龙脉加密锁 15元起 Grid++Report 报表 申请支付@网
 相关文章
没有相关文章
相关评论
共有评论26条
我要发表评论 查看全部评论
 
  DELPHI盒子版权所有 技术支持:深圳市麟瑞科技有限公司 1999-2024 V4.01 粤ICP备10103342号-1 更新RSS列表