AOP、OOP在字面上雖然很是相似,但倒是面向不一樣領域的兩種設計思想。 簡單說,AOP面向動詞領域,OOP面向名詞領域數據庫
AOP: (Aspect Oriented Programming) 面向切面編程。是目前軟件開發中的一個熱點,也是Spring框架中的內容。利用AOP能夠對業務邏輯的各個部分進行隔離,從而使得業務邏輯各部分之間的耦合度下降,提升程序的可重用性,同時提升了開發的效率。主要的功能是:日誌記錄,性能統計,安全控制,事務處理,異常處理等等。編程
OOP:面向對象編程。針對業務處理過程的實體及其屬性和行爲進行抽象封裝,以得到更加清晰高效的邏輯單元劃分。 而AOP則是針對業務處理過程當中的切面進行提取,它所面對的是處理過程當中的某個步驟或階段,以得到邏輯過程當中各部分之間低耦合性的隔離效果。這兩種設計思想在目標上有着本質的差別。設計模式
總之,AOP能夠經過預編譯方式和運行期動態代理實如今不修改源代碼的狀況下給程序動態統一添加功能的一種技術,把散落在程序中的公共部分提取出來,作成切面類,這樣的好處在於,代碼的可重用,一旦涉及到該功能的需求發生變化,只要修改該代碼就行,不然,你要處處修改,若是隻要修改一、2處那還能夠接受,萬一有1000處呢。安全
最經常使用的AOP應用在數據庫鏈接以及事務處理上。框架
實現模式可能爲:代理模式+工廠模式性能
優秀的設計模式是重構出來的:面向對象 >> 設計模式 >> 重構spa