前言

OOP與AOP

OOP(Object Oriented Programming,面向?qū)ο缶幊?,通過封裝、繼承將程序抽象為各個層次的對象,進(jìn)而組合為模塊或者程序,達(dá)到了軟件工程中的重用性、靈活性、擴(kuò)展性。程序的運(yùn)行籠統(tǒng)地可以看為各層次對象之間的相互調(diào)用。
AOP(Aspect Oriented Programming,面向切面編程),將程序運(yùn)行過程分解為一個個的切面,對特定的切面(某個步驟或者階段)進(jìn)行提取,達(dá)到解耦各種不同邏輯代碼。
OOP是在程序分塊層面上進(jìn)行考慮,而AOP則是在程序運(yùn)行的切面上進(jìn)行考慮。

可以將AOP理解為一種無損傷型的”切面”激光手術(shù)刀。OOP使屬性和行為被封裝為了一個嚴(yán)實(shí)、密不透風(fēng)的對象。想要改變由對象保護(hù)著的方法,就可以通過該激光手術(shù)刀,既不損傷對象(即是,不破壞對象的封裝),又不添加任何冗余的代碼,實(shí)現(xiàn)對原對象的方法的增強(qiáng)處理。

不得不說,AOP實(shí)在是一種巧妙的編程思想!??!彌補(bǔ)了OOP中一些難以解決的問題。例如,
1. 類應(yīng)該是純凈的,不應(yīng)含有與本身無關(guān)的邏輯。如日志跟蹤的邏輯代碼。這樣的類就可以更好地重用,更有效地被AOP的切入更多的業(yè)務(wù)邏輯, 舉例代碼如下:

/*
* 假如需要記錄某只柯基狗的日常,
* 我們總不能讓它自己來記錄吧??
* 如 下面的注釋了的方法
* 看起來是不是非常怪異,一只狗狗自己給自己寫日記
*/
class dog{
   void run

網(wǎng)友評論