更新時間:2022-08-02 10:17:55 來源:動力節點 瀏覽994次
AOP(Aspect-Oriented Programming的簡稱),也就是面向切面編程的意思,它是一種編程思想,在Spring的官方文檔中描述: 面向切面編程(AOP)提供了另一種思考程序結構的方式來對面向對象編程(OOP)的進行補充和完善,面向對象編程(OOP)中關鍵的是對象,而面向切面編程(AOP)中關鍵的是切面。
AOP中切面可以實現關注點的模塊化(即統一抽取,提高復用),例如跨越多種類型和對象的事務管理,這種關注點在 AOP 文獻中通常被稱為橫切關注點。
單單看文字描述可能比較抽象,下面我們通過具體例子結合圖片來形象化這些概念。
例子:洗澡(聲明,以下步驟是個人構想,不代表大家,如果覺的我的設想不夠豐富的,歡迎評論留言,送你上熱搜)
步驟(男): 脫衣服、唱歌、洗臉、洗頭、洗身體、擦干身體、穿衣服
步驟(女): 脫衣服、洗臉、洗頭、護發、洗身體、擦干身體、護膚、穿衣服
發現問題: 通過上面的例子,我們會發現無論男女,脫衣服、穿衣服是洗澡不可缺少的步驟,而且這兩個步驟在“洗澡”這個業務不是核心,它只是一個關注點,因為脫衣服和穿衣服的場景并不只是在洗澡中存在(還有什么場景自己聯想),就比如: 天氣熱我們需要脫衣服,天氣冷我們需要穿衣服,所以,將衣服的管理定義成一個模塊,然后在需要的地方調用才是是一個更加合理的設計,具體如下圖:
面向對象編程(OOP)的出現讓開發者能夠實現縱向的業務邏輯處理,但面向對象編程(OOP)并不適合用于定義橫向業務邏輯的關系,這樣的設計會導致系統出現大量重復代碼,復用性極差,如最常用的日志以及事務功能,它們都可能是橫向的分布在不通的業務層級(對象層級)中,但是又和具體的核心業務無直接關系,諸如這樣類型的代碼,在程序中被稱作橫切(cross cutting),我們應該考慮將這一類代碼進行統一管理,提高復用性。
面向切面編程(AOP)就是將這類與核心業務無關的,但又影響著多個類的公共行為抽取、Java封裝到一個可重用模塊,從而實現代碼復用和模塊解耦的目的,這種開發思想則被稱為面向切面編程。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習