1. 程式人生 > >AOP與OOP的區別

AOP與OOP的區別

 AOP: (Aspect Oriented Programming) 面向切面程式設計。是目前軟體開發中的一個熱點,也是Spring框架中容。利用AOP可以對業務邏輯的各個部分進行隔離,從而使得業務邏輯各部分之間的耦合度降低,提高程式的可重用性,同時提高了開發的效率。主要的功能是:日誌記錄,效能統計,安全控制,事務處理,異常處理等等。

      AOP、OOP在字面上雖然非常類似,但卻是面向不同領域的兩種設計思想。OOP(面向物件程式設計)針對業務處理過程的實體及其屬性和行為進行抽象封裝,以獲得更加清晰高效的邏輯單元劃分。 而AOP則是針對業務處理過程中的切面進行提取,它所面對的是處理過程中的某個步驟或階段,以獲得邏輯過程中各部分之間低耦合性的隔離效果。這兩種設計思想在目標上有著本質的差異。

      舉個簡單的例子,對於“僱員”這樣一個業務實體進行封裝,自然是OOP的任務,我們可以為其建立一個“Employee”類,並將“僱員”相關的屬性和行為封裝其中。而用AOP設計思想對“僱員”進行封裝將無從談起。       同樣,對於“許可權檢查”這一動作片斷進行劃分,則是AOP的目標領域。而通過OOP對一個動作進行封裝,則有點不倫不類。 換而言之,OOP面向名詞領域,AOP面向動詞領域。

      總之,AOP可以通過預編譯方式和執行期動態代理實現在不修改原始碼的情況下給程式動態統一新增功能的一種技術,把散落在程式中的公共部分提取出來,做成切面類,這樣的好處在於,程式碼的可重用,一旦涉及到該功能的需求發生變化,只要修改該程式碼就行,否則,你要到處修改,如果只要修改1、2處那還可以接受,萬一有1000處呢。

      最常用的AOP應用在資料庫連線以及事務處理上。