3 回答

TA貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個(gè)贊
“最佳”是主觀的。
首先,列出所需功能,體系結(jié)構(gòu)等的列表。然后尋找可以滿足您需求的選項(xiàng),而又不引入不必要的復(fù)雜性。例如,有幾種面向接口:您的代碼當(dāng)前是否面向接口?如果不是這樣,則PostSharp可能是一個(gè)更好的選擇(被編織到原始類中)。但是,當(dāng)然,不能在運(yùn)行時(shí)配置PostSharp。

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超3個(gè)贊
在.NET中進(jìn)行面向方面的編程的最佳方法是使用眾所周知的設(shè)計(jì)技術(shù)。例如,通過(guò)應(yīng)用SOLID原則,您可以實(shí)現(xiàn)允許添加跨領(lǐng)域關(guān)注點(diǎn)所需的靈活性和模塊化。如果您擁有設(shè)計(jì)權(quán),那么您甚至可以在沒(méi)有任何框架的情況下應(yīng)用大多數(shù)跨領(lǐng)域關(guān)注點(diǎn)。認(rèn)為OOP不適合執(zhí)行AOP是一個(gè)謬論。
這里有一些指針:
不要依賴具體實(shí)例,而要依賴抽象。
不要在同一個(gè)類中混用跨領(lǐng)域的關(guān)注點(diǎn)和業(yè)務(wù)邏輯。
通過(guò)將帶有業(yè)務(wù)邏輯的類包裝在實(shí)現(xiàn)那些關(guān)注點(diǎn)的類(裝飾器)中來(lái)添加橫切關(guān)注點(diǎn)。
在設(shè)計(jì)中找到常見(jiàn)的工件,并對(duì)其進(jìn)行平均建模,最好使用相同類型的抽象??纯催@個(gè)和這個(gè),例如。
當(dāng)您有了正確的抽象之后,向系統(tǒng)添加新的橫切關(guān)注點(diǎn)只是編寫一個(gè)新的裝飾器類并將其包裝在正確的實(shí)現(xiàn)上。如果抽象是通用的,則可以將單個(gè)裝飾器包裝在一大類類中(這正是AOP的目的)。
盡管諸如動(dòng)態(tài)代理和代碼編織之類的技術(shù)可以使設(shè)計(jì)較差的應(yīng)用程序變得更容易,但對(duì)于好的設(shè)計(jì),確實(shí)沒(méi)有其他選擇。遲早您會(huì)被燙傷的。但這并不意味著不應(yīng)使用動(dòng)態(tài)代理生成和代碼編織。但是,如果沒(méi)有適當(dāng)?shù)膽?yīng)用程序設(shè)計(jì),那么即使是那些技術(shù)也只能提供很少的幫助。
- 3 回答
- 0 關(guān)注
- 1179 瀏覽
添加回答
舉報(bào)