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