aop的通俗解釋

轉自:https://blog.csdn.net/ios_xumin/article/details/78465782

 切面編程,就是在你項目原有的功能基礎上,通過AOP去添加新的功能,這些功能是建立在原有功能的基礎上的,而且原有的功能並不知道你已經添加了新的功能。比如說,你去ATM取錢,取錢是一個功能,取完錢後向你的手機發送一條取錢信息,這就是新加的功能。
   AOP就是在某一個類或方法執行前後打個標記,聲明在執行到這裏之前要先執行什麼,執行完這裏之後要接着執行什麼。插入了新的執行方法。

當我們需要在許多類中添加相同邏輯(或記錄等其他)代碼的時候,一般我們編程會在每一個類中都寫上這些代碼。當需要修改的時候,我們又必須找出這些類來刪除這些邏輯代碼。這裏,你覺不覺得有什麼問題。這好像關係到複用的問題,那麼可以用聚合或繼承來完成?那麼再繼續下去,我們需要這些邏輯代碼指定到類中的某個方法前面執行,或者在方法後面執行,又或者我想指定在類的某一個位置去執行它,那麼這就不是複用的問題了,而是要修改類了,變成動態的了。那麼就出現了aop這個概念-面向切面編程

如上圖,黑線爲一個流程代碼,紅線爲切入的代碼。即在5個流程中固定位置插入了3個邏輯代碼,如果你不需要的時候,你完全可以撤出紅線代碼,而要修改的話,也只需修改這三個類(紅線)即可,因爲主代碼(黑線)和添加代碼(紅線)是沒有耦合的,相當於插拔式的。而且spring aop支持聲明式的配置,使得aop更加方便。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章