在Delphi中应用AOP实现日志功能2008-02-02陈亮亮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;