摘要面向方面編程 (AOP) 是施樂公司帕洛阿爾托研究中心 (Xerox PARC) 在上世紀(jì) 90 年代發(fā)明的一種編程范式,它使開發(fā)人員可以更好地將本不該彼此糾纏在一起的任務(wù)(例如數(shù)學(xué)運(yùn)算和異常處理)分離開來。 AOP 方法有很多優(yōu)點(diǎn)。首先,由于操作更為簡(jiǎn)潔,所以改進(jìn)了性能。其次,它使程序員可以花費(fèi)更少的時(shí)間重寫相同的代碼??傊?,AOP 能夠?yàn)椴煌^程提供更好的封裝性,提高未來的互操作性。
是什么使軟件工程師都希望自己能成為硬件工程師呢?自從函數(shù)發(fā)明以來,程序員花費(fèi)了大量時(shí)間(及其老板的大多數(shù)資金)試圖設(shè)計(jì)這樣的系統(tǒng):它們不過是一些組合模型,由其他人創(chuàng)建的部件構(gòu)成,布置成獨(dú)特的形狀,再覆蓋上一些悅目的顏色。函數(shù)、模板、類、組件等等一切,都是軟件工程師自己創(chuàng)建“軟件集成電路”(模擬硬件設(shè)計(jì)師的電子器件)的種種嘗試。
我把這些都?xì)w咎于 Lego(樂高玩具)。把兩個(gè)玩具塊(即組件)拼起時(shí)發(fā)出的悅耳的咔噠聲很讓人上癮,會(huì)促使許多程序員發(fā)明一種又一種新的封裝和重用的新機(jī)制。這方面最新的進(jìn)展就稱為面向方面編程 (AOP) 。 AOP 的核心是安排(一個(gè)摞在另一個(gè)之上)組件的一種方式,可以獲得其他種類基于組件的開發(fā)方法無法得到的重用級(jí)別。這種安排是在客戶端和對(duì)象之間的調(diào)用堆棧中進(jìn)行的,其結(jié)果是為對(duì)象創(chuàng)建了一種特定的環(huán)境。這種環(huán)境正是 AOP 程序員主要追求的東西,繼續(xù)閱讀本文,您將了解這一點(diǎn)。
隨本文一起提供的代碼示例分為兩部分:COM 部分和 Microsoft .NET 部分。 COM 部分創(chuàng)建了一種基礎(chǔ)結(jié)構(gòu),可以在 COM 對(duì)象中添加方面,提供用戶界面來配置類的方面,還給出了在我們提供的基礎(chǔ)結(jié)構(gòu)上創(chuàng)建的一個(gè)示例方面實(shí)現(xiàn)。 .NET 部分說明了如何使用內(nèi)置于 .NET 基礎(chǔ)結(jié)構(gòu)來完成 COM 版本同樣的任務(wù),但是所用代碼更少,選擇也更多。也提供了適合此基礎(chǔ)結(jié)構(gòu)的示例方面。
是什么使軟件工程師都希望自己能成為硬件工程師呢?自從函數(shù)發(fā)明以來,程序員花費(fèi)了大量時(shí)間(及其老板的大多數(shù)資金)試圖設(shè)計(jì)這樣的系統(tǒng):它們不過是一些組合模型,由其他人創(chuàng)建的部件構(gòu)成,布置成獨(dú)特的形狀,再覆蓋上一些悅目的顏色。函數(shù)、模板、類、組件等等一切,都是軟件工程師自己創(chuàng)建“軟件集成電路”(模擬硬件設(shè)計(jì)師的電子器件)的種種嘗試。
我把這些都?xì)w咎于 Lego(樂高玩具)。把兩個(gè)玩具塊(即組件)拼起時(shí)發(fā)出的悅耳的咔噠聲很讓人上癮,會(huì)促使許多程序員發(fā)明一種又一種新的封裝和重用的新機(jī)制。這方面最新的進(jìn)展就稱為面向方面編程 (AOP) 。 AOP 的核心是安排(一個(gè)摞在另一個(gè)之上)組件的一種方式,可以獲得其他種類基于組件的開發(fā)方法無法得到的重用級(jí)別。這種安排是在客戶端和對(duì)象之間的調(diào)用堆棧中進(jìn)行的,其結(jié)果是為對(duì)象創(chuàng)建了一種特定的環(huán)境。這種環(huán)境正是 AOP 程序員主要追求的東西,繼續(xù)閱讀本文,您將了解這一點(diǎn)。
隨本文一起提供的代碼示例分為兩部分:COM 部分和 Microsoft .NET 部分。 COM 部分創(chuàng)建了一種基礎(chǔ)結(jié)構(gòu),可以在 COM 對(duì)象中添加方面,提供用戶界面來配置類的方面,還給出了在我們提供的基礎(chǔ)結(jié)構(gòu)上創(chuàng)建的一個(gè)示例方面實(shí)現(xiàn)。 .NET 部分說明了如何使用內(nèi)置于 .NET 基礎(chǔ)結(jié)構(gòu)來完成 COM 版本同樣的任務(wù),但是所用代碼更少,選擇也更多。也提供了適合此基礎(chǔ)結(jié)構(gòu)的示例方面。