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
……
Flog
LogCommand(
模塊乙 操作一
);
end;
就這樣寫了大約二十幾個地方突然覺得自己太可悲了作為一個高科技人才就干這種體力活嗎?
壞味道的出現
在許許多多的地方都出現了FlogLogCommand這樣的函數調用正是這些函數調用讓我崩潰在這麼做下去估計我撐不到周末了
CV大法已經讓我覺得羞愧加惱怒系統中到處出現了這樣的重復代碼
無奈之中我耷拉著腦袋走到一個同事桌前
嘿救救我吧我想解脫
怎麼回事?同事善意地問道
事情是這樣子的……
[] []
From:http://tw.wingwit.com/Article/program/Delphi/201311/24869.html