在Delphi中应用AOP实现日志功能

http://tech.ddvip.com   2006年08月01日    社区交流

本文详细介绍在Delphi中应用AOP实现日志功能

  AOP现在很火,网上有这许多支持AOP的框架,对于Delphi来说同样也有MeAOP。不过觉得这些框架太复杂了。

  现在有一个系统,基本上都快结束了,整体上当然是没有采用什么AOP的框架。对于这样的系统能否用上AOP的一点点好处呢?

  项目组提出在现有的系统上加入日志记录的需求。大家一起来看看我是怎么来实现这个功能的吧。

  AOP简要说明

  根据网上对AOP的解释,它具有下面的特征:

  1、将通用功能从不相关类之中分离出来;

  2、能够使得很多类共享一个功能,一旦功能发生变化,不必修改很多类,只要修改这个功能就可以了。

  AOP的核心在于保持横切关注点的分离。

  日志功能

  这是一个比较典型的MIS系统,现在编码基本结束。不过某个开发人员接到了一个繁琐又看上去没什么技术含量的任务——实现日志功能。这个开发者就是本人了。

  虽然没什么难度,但还是设计一下吧,谁让我是一个自诩为高水平的程序员呢。

  一个设计图就这么做出来了。其中设计一个接口ILog来封装日志实现的细节。模块甲乙丙只需要使用接口ILog就可以。满足了XXX面向对象的设计原则。太完美了!

  泡杯茶,然后开始写代码实现这个简单而庞大的任务。

  开始编码了!

  TLog,ILog实现比较简单,在此略去不谈。稍微修改一下以前模块的代码,将ILog接口传入每一个模块中。

  接下来只需要实现日志功能的调用就可以了。

  模块甲:

  procedure TModule1.acAction1Execute(Sender: TObject);
begin
……
Flog.LogCommand(“模块甲 操作一”);
end;
procedure TModule1.acAction2Execute(Sender: TObject);
begin
……
Flog.LogCommand(“模块甲 操作二”);
end;

作者:陈亮亮    责编:豆豆技术应用

正在加载评论...