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 TModule
acAction
Execute(Sender: TObject);
begin
……
FlogLogCommand(模块乙 操作一);
end;
就这样写了大约二十几个地方突然觉得自己太可悲了作为一个高科技人才就干这种体力活吗?
坏味道的出现
在许许多多的地方都出现了FlogLogCommand这样的函数调用正是这些函数调用让我崩溃在这么做下去估计我撑不到周末了
CV大法已经让我觉得羞愧加恼怒系统中到处出现了这样的重复代码
无奈之中我耷拉着脑袋走到一个同事桌前
嘿救救我吧我想解脱
怎么回事?同事善意地问道
事情是这样子的……
[] []