當我們需要公升級業務修改邏輯**時,我們要保證公升級後的業務**需要相容以前的處理邏輯,也就是說再保留原有的功能邏輯的基礎上,進行新的業務功能開發,這個時候就需要我們去修改當前的功能方法原始碼,增加新的邏輯**,然後重新執行專案,這個時候就會出現:
(1)假如我們有當前功能方法的原始碼,就需要閱讀當前方法的原始碼,然後在增加自己的新的邏輯**,並且修改後,需要將新的類檔案替換舊的類檔案,本身閱讀**效率較低。
(2)假如我們沒有原始碼,那就無法直接修改原始碼,哪還怎麼公升級?
方案一:
我們有乙個a物件,a中有個test()方法,我們需要對a的test方法進行公升級,此時我們就去閱讀a的test()方法,然後對a的test()進行邏輯修改。
方案二:
其實我們使用了方案二已經是對**公升級完成的差不多了,為什麼我們的主角aop還沒登場呢?
在這裡就不得不提下oop和aop的區別了,我的理解很簡單,oop就是至上而下的擴充套件,aop就是橫向擴充套件,這麼說你們可能不理解,畫個圖給你們你們就明白了
可能有些人會說我把aop拉直不就是oop了嗎?我只能說,槓精,求放過。
好的。我們不理槓精,繼續。我們spring使用aop是怎麼一回事呢?為什麼說springaop強大呢?
給你們介紹幾個專業點的概念,面試顯得牛頭啤酒點。
"a" class
="com.wq.a"
>
bean
>
"before"
class
="com.wq.e"
>
bean
>
"after"
class
="com.wq.f"
>
bean
>
<
aop:config
>
<
aop:pointcutid=
"test"
expression
="com.wq.a.test()"
/>
<
aop:before
pointcut-ref
="before"
method
="before"
/>
<
aop:after
pointcut-ref
="after"
method
="after"
/>
aop:config
>
以前一開始學的時候,aop,aop就知道是用來做橫向日誌,根本就不知道是什麼東西。果然二刷能變強,aop其實主要就是用來**公升級的,只是他區別於我們常用的oop,至上而下的程式設計,可以用橫向擴充套件的方式來對**進行公升級維護。 杭電OJ刷題系列 二
目錄 2039.三角形 1720.a b coming 1062.text reverse 2104.hide handkerchief 1064.financial management 2734.quicksum 1170.balloon comes 1197.specialized four ...
二叉樹刷題系列( )
本篇文章leetcode題目刷二叉樹的題關鍵在於框架,本質上我們得摸清楚遍歷的情況。在做二叉樹的時候,重點考慮兩個方面。第一,以什麼順序進行遍歷,無非就是前序 後序 中序 層序次序上的變種。對於遞迴函式的呼叫,我們嚴格按照函式給出定義去構建。不需要每次過分糾結在一層層遞迴中,把自己搞暈。因此,遞迴框...
C 刷題 leetcode貪心系列 二
給定乙個區間的集合,找到需要移除區間的最小數量,使剩餘區間互不重疊。注意 可以認為區間的終點總是大於它的起點。區間 1,2 和 2,3 的邊界相互 接觸 但沒有相互重疊。示例 1 輸入 1,2 2,3 3,4 1,3 輸出 1 解釋 移除 1,3 後,剩下的區間沒有重疊。示例 2 輸入 1,2 1,...