在Delphi中应用AOP实现日志功能
AOP现在很流行。网上有很多支持AOP的框架,也有针对Delphi的MeAOP。但是我觉得这些框架太复杂了。
现在有一个系统,差不多完成了。总的来说,当然没有AOP框架。这样的系统可以利用AOP的一点优势吗?
项目组提出了在现有系统中增加日志记录的需求。先来看看我是怎么实现这个功能的。
AOP的简要描述
按照AOP的在线解释,它有以下特点:
1.将一般函数与不相关的类分开;2 .
。许多类可以共享一个函数。一旦函数发生变化,不需要修改很多类,只需要修改这个函数即可。
AOP的核心是将横切关注点分开。
对数函数
这是一个典型的MIS系统,现在编码基本结束了。然而,一名开发人员接到了一项繁琐且看似不熟练的任务——实现日志功能。这个开发者就是他自己。
虽然不难,还是设计一下吧。我是一个自称高级程序员的人。
设计图纸是这样做的。接口ILog被设计成封装日志实现的细节。模块A、B和C只需要使用接口ILog。符合XXX面向对象的设计原则。太完美了!
泡一杯茶,然后开始写代码实现这个简单而庞大的任务。
编码开始!
TLog和ILog的实现比较简单,这里就不赘述了。稍微修改前面模块的代码,将ILog接口引入每个模块。
接下来,只需要调用log函数。
模块A:
过程t module 1 . a action 1 execute(发送方:to object);
begin
……
flog . log command("模块A的操作一");
end;
过程t module 1 . a action 2 execute(发送方:to object);
begin
……
flog . log command("模块A的操作II ");
end;
模块B:
过程t module 2 . a action 1 execute(发送方:to object);
begin
……
flog . log command("模块B的操作1 ");
end;
0条评论