1. 程式人生 > >面向物件與面向切面程式設計

面向物件與面向切面程式設計

如果說面向物件程式設計是關注將需求功能劃分為不同的並且相對獨立,封裝良好的類,並讓它們有著屬於自己的行為,依靠繼承和多型等來定義彼此的關係的話;那麼面向切面程式設計則是希望能夠將通用需求功能從不相關的類當中分離出來,能夠使得很多類共享一個行為,一旦發生變化,不必修改很多類,而只需要修改這個行為即可。
面向切面程式設計是一個令人興奮不已的新模式。就開發軟體系統而言,它的影響力必將會和有著數十年應用歷史的面向物件程式設計一樣巨大。面向切面程式設計和麵向物件程式設計不但不是互相競爭的技術而且彼此還是很好的互補。面向物件程式設計主要用於為同一物件層次的公用行為建模。它的弱點是將公共行為應用於多個無關物件模型之間。*

而這恰恰是面向切面程式設計適合的地方有了 AOP,我們可以定義交叉的關係,並將這些關係應用於跨模組的、彼此不同的物件模型。AOP 同時還可以讓我們層次化功能性而不是嵌入功能性,從而使得程式碼有更好的可讀性和易於維護。它會和麵向物件程式設計合作得很好。*