前言
OOP與AOP
OOP(Object Oriented Programming,面向?qū)ο缶幊?,通過封裝、繼承將程序抽象為各個層次的對象,進而組合為模塊或者程序,達到了軟件工程中的重用性、靈活性、擴展性。程序的運行籠統(tǒng)地可以看為各層次對象之間的相互調(diào)用。
AOP(Aspect Oriented Programming,面向切面編程),將程序運行過程分解為一個個的切面,對特定的切面(某個步驟或者階段)進行提取,達到解耦各種不同邏輯代碼。
OOP是在程序分塊層面上進行考慮,而AOP則是在程序運行的切面上進行考慮。
可以將AOP理解為一種無損傷型的”切面”激光手術刀。OOP使屬性和行為被封裝為了一個嚴實、密不透風的對象。想要改變由對象保護著的方法,就可以通過該激光手術刀,既不損傷對象(即是,不破壞對象的封裝),又不添加任何冗余的代碼,實現(xiàn)對原對象的方法的增強處理。
不得不說,AOP實在是一種巧妙的編程思想?。。浹a了OOP中一些難以解決的問題。例如,
1. 類應該是純凈的,不應含有與本身無關的邏輯。如日志跟蹤的邏輯代碼。這樣的類就可以更好地重用,更有效地被AOP的切入更多的業(yè)務邏輯, 舉例代碼如下:
/*
* 假如需要記錄某只柯基狗的日常,
* 我們總不能讓它自己來記錄吧??
* 如 下面的注釋了的方法
* 看起來是不是非常怪異,一只狗狗自己給自己寫日記
*/
class dog{
void run
網(wǎng)友評論