发布网友 发布时间:2022-12-26 23:48
共1个回答
热心网友 时间:2023-07-19 08:15
AOP现在很火 网上有这许多支持AOP的框架 对于Delphi来说同样也有MeAOP 不过觉得这些框架太复杂了
现在有一个系统 基本上都快结束了 整体上当然是没有采用什么AOP的框架 对于这样的系统能否用上AOP的一点点好处呢?
项目组提出在现有的系统上加入日志记录的需求 大家一起来看看我是怎么来实现这个功能的吧
AOP简要说明
根据网上对AOP的解释 它具有下面的特征
将通用功能从不相关类之中分离出来 能够使得很多类共享一个功能 一旦功能发生变化 不必修改很多类 只要修改这个功能就可以了 AOP的核心在于保持横切关注点的分离
日志功能
这是一个比较典型的MIS系统 现在编码基本结束 不过某个开发人员接到了一个繁琐又看上去没什么技术含量的任务——实现日志功能 这个开发者就是本人了
虽然没什么难度 但还是设计一下吧 谁让我是一个自诩为高水平的程序员呢
一个设计图就这么做出来了 其中设计一个接口ILog来封装日志实现的细节 模块甲乙丙只需要使用接口ILog就可以 满足了XXX面向对象的设计原则 太完美了!
泡杯茶 然后开始写代码实现这个简单而庞大的任务 开始编码了!
TLog ILog实现比较简单 在此略去不谈 稍微修改一下以前模块的代码 将ILog接口传入每一个模块中
接下来只需要实现日志功能的调用就可以了
模块甲
procere TMole acAction Execute(Sender: TObject);begin……Flog LogCommand( 模块甲 操作一 );end;
procere TMole acAction Execute(Sender: TObject);begin……Flog LogCommand( 模块甲 操作二 );end;
模块乙
procere TMole acAction Execute(Sender: TObject);begin……Flog LogCommand( 模块乙 操作一 );end;就这样 写了大约二十几个地方 突然觉得自己太可悲了 作为一个高科技人才就干这种体力活吗? 坏味道的出现 在许许多多的地方都出现了Flog LogCommand这样的函数调用 正是这些函数调用让我崩溃 在这么做下去估计我撑不到周末了
CV* 已经让我觉得羞愧加恼怒 系统中到处出现了这样的重复代码
无奈之中 我耷拉着脑袋走到一个同事桌前
嘿 救救我吧 我想解脱
怎么回事? 同事善意地问道
事情是这样子的……
lishixin/Article/program/Delphi/201311/24869