其他语言

位置:IT落伍者 >> 其他语言 >> 浏览文章

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


发布日期:2021年02月25日
 
在Delphi中应用AOP实现日志功能[1]

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

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

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

AOP简要说明

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

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

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

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

日志功能

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

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

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

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

开始编码了!

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

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

模块甲

procedure TModuleacActionExecute(Sender: TObject);

begin

……

FlogLogCommand(模块甲 操作一);

end;

procedure TModuleacActionExecute(Sender: TObject);

begin

……

FlogLogCommand(模块甲 操作二);

end;

模块乙

procedure TModuleacActionExecute(Sender: TObject);

begin

……

FlogLogCommand(模块乙 操作一);

end;

就这样写了大约二十几个地方突然觉得自己太可悲了作为一个高科技人才就干这种体力活吗?

坏味道的出现

在许许多多的地方都出现了FlogLogCommand这样的函数调用正是这些函数调用让我崩溃在这么做下去估计我撑不到周末了

CV大法已经让我觉得羞愧加恼怒系统中到处出现了这样的重复代码

无奈之中我耷拉着脑袋走到一个同事桌前

救救我吧我想解脱

怎么回事?同事善意地问道

事情是这样子的……

[] []

               

上一篇:基于Delphi的组件设计之概念[3]

下一篇:在Delphi中应用AOP实现日志功能[2]