什麼是AOP程式設計?
AOP是OOP的延續,是Aspect Oriented Programming的縮寫,直譯意思:面向方面程式設計、面向切面程式設計。
AOP通過預編譯方式和執行期動態代理實現在不修改原始碼的情況下給程式動態統一新增功能的一種技術。可以在程式碼階段實現分離關注,實現鬆耦合,然後在執行時將相關動作特徵植入執行,從而改變程式的執行順序,達到攔截或者增加功能的目的。
常見框架:VirtualXposed
下面先說AOP是什麼樣的思想,我們一步一步慢慢來,先看一下傳統程式的流程,比如銀行系統會有一個取款流程
我們可以把方框裡的流程合為一個,另外系統還會有一個查詢餘額流程,我們先把這兩個流程放到一起:
有沒有發現,這個兩者有一個相同的驗證流程,我們先把它們圈起來再說下一步:
有沒有想過可以把這個驗證使用者的程式碼是提取出來,不放到主流程裡去呢?這就是AOP的作用了。有了AOP,寫程式碼時可以專注業務邏輯而不用考慮驗證使用者步驟,寫完之後,呼叫其他地方已經寫好驗證使用者的程式碼,把這段程式碼加到哪幾個地方,而不要你自己Copy過去。
這裡還是兩個地方,如果你有多個控制流呢,這個寫程式碼的方法可以大大減少你的時間,不過AOP的目的不是這樣,這只是一個“副作用”,真正目的是:你寫程式碼的時候,事先只需考慮主流程,而不用考慮那些不重要的流程。
懂C的都知道,良好的風格要求在函式起始處驗證引數,如果在C上可以用AOP,就可以先不管校驗引數的問題,事後使用AOP就可以隔山打牛的給所有函式一次性加入校驗程式碼,而你只需要寫一次校驗程式碼。
現在大概明白了AOP了嗎,我們假設上面那個方框是個平面,你可以把它當塊板子,這塊板子插入一些控制流程,這塊板子就可以當成是AOP中的一個切面。所以AOP的本質是在一系列縱向的控制流程中,把那些相同的子流程提取成一個橫向的面,這句話應該好理解吧,我們把縱向流程畫成一條直線,然把相同的部分以綠色突出,如下圖左,而AOP相當於把相同的地方連一條橫線,如下圖右,這個圖沒畫好,大家明白意思就行。
這個驗證使用者這個子流程就成了一個條線,也可以理解成一個切面,aspect的意思我認為是方面,你用什麼實物去類比,只要你能理解都可以。這裡的切面只插了兩三個流程,如果其它流程也需要這個子流程,也可以插到其它地方去。
相關文章
- Spring AOP(面向切面程式設計)是什麼?Spring程式設計
- 電腦程式設計是什麼?程式設計
- 什麼是程式設計?大道之行也,“程式設計”為公程式設計
- .NET的併發程式設計(TPL程式設計)是什麼?程式設計
- 什麼是 AOP 面向切面?
- 設計模式:代理模式是什麼,Spring AOP還和它有關係?設計模式Spring
- 什麼是反應式程式設計?程式設計
- HelloCode:什麼是少兒程式設計程式設計
- 程式設計師的悲哀是什麼?程式設計師
- python UDP程式設計是什麼意思?PythonUDP程式設計
- 你知道什麼是 AOP 嗎?
- UI設計是什麼_UI設計學什麼?UI
- 什麼是 10x 程式設計師程式設計師
- 1024為什麼是程式設計師日程式設計師
- 什麼是程式設計裡的 backoff pattern程式設計
- 【1024程式設計師節】程式設計師,你學程式設計的初衷是什麼?程式設計師
- 什麼是AOP,以及在Springboot中自定義AOPSpring Boot
- AOP(面向切面程式設計)程式設計
- AOP 面向切面程式設計程式設計
- 什麼是物件?什麼是抽象?怎麼理解物件導向的程式設計思想?物件抽象程式設計
- 什麼是設計模式設計模式
- Python tkinter是什麼?GUI程式設計有哪些?PythonGUI程式設計
- 漫畫 | 程式設計師的悲哀是什麼?程式設計師
- 設計模式之面向切面程式設計AOP設計模式程式設計
- AOP程式設計實戰-AspectJ程式設計
- Spring 面向方面程式設計 AOPSpring程式設計
- AOP--面向切面程式設計程式設計
- 程式設計師的核心競爭力是什麼?程式設計師
- 程式設計師思維看愛情是什麼?程式設計師
- 為什麼你還是學不會程式設計程式設計
- 程式設計師是什麼讓你停滯不前—是安逸,還是….程式設計師
- Scala 函數語言程式設計(一) 什麼是函數語言程式設計?函數程式設計
- 如何學習shell程式設計?Linux運維學習shell程式設計是什麼程式設計Linux運維
- 什麼是設計模式?為什麼要使用設計模式?有什麼好處?設計模式
- 什麼是程式碼審計?程式碼審計有什麼好處?
- 什麼是網頁設計的"原子設計”?網頁
- spring AOP 程式設計式應用Spring程式設計
- 前端js面向切面程式設計(AOP)前端JS程式設計