解釋
AOP全名為Aspect-Oriented Programming,有關於AOP的許多名詞術語都過於抽象,單從字面上並不容易理解其名詞意義。
是計算機科學中的一個術語,指一種程序設計範型。該範型以一種稱為側面(aspect,又譯作方面)的語言構造為基礎,側面是一種新的模塊化機制,用來描述分散在對象、類或函數中的橫切關注點(crosscutting concern)。
側面的概念源於對物件導向的程序設計的改進,但並不只限於此,它還可以用來改進傳統的函數。與側面相關的編程概念還包括元對象協議、主題(subject)、mixin和委託。
基本概念
* 關注點(concern):對軟體工程有意義的小的、可管理的、可描述的軟體組成部分,一個關注點通常只同一個特定概念或目標相關聯。
* 主關注點(core concern):一個軟體最主要的關注點。
* 關注點分離(separation of concerns,SOC):標識、封裝和操縱只與特定概念、目標相關聯的軟體組成部分的能力,即標識、封裝和操縱關注點的能力。
* 方法(method):用來描述、設計、實現一個給定關注點的軟體構造單位。
* 橫切(crosscut):兩個關注點相互橫切,如果實現它們的方法存在交集。
* 支配性分解(dominant decomposition):將軟體分解成模塊的主要方式。傳統的程式語言是以一種線性的文本來描述軟體的,只採用一種方式(比如:類)將軟體分解成模塊;這導致某些關注點比較好的被捕捉,容易進一步組合、擴展;但還有一些關注點沒有被捕捉,彌散在整個軟體內部。支配性分解一般是按主關注點進行模塊分解的。
* 橫切關注點(crosscutting concerns):在傳統的程式語言中,除了主關注點可以被支配性分解方式捕捉以外,還有許多沒有被支配性分解方式捕捉到的關注點,這些關注點的實現會彌散在整個軟體內部,這時這些關注點同主關注點是橫切的。
* 側面(aspect):在支配性分解的基礎上,提供的一種輔助的模塊化機制,這種新的模塊化機制可以捕捉橫切關注點。
從主關注點中分離出橫切關注點是面向側面的程序設計的核心概念。分離關注點使得解決特定領域問題的代碼從業務邏輯中獨立出來,業務邏輯的代碼中不再含有針對特定領域問題代碼的調用,業務邏輯同特定領域問題的關係通過側面來封裝、維護,這樣原本分散在在整個應用程序中的變動就可以很好的管理起來。
「面向側面的程序設計」(aspect-oriented programming)這一術語出現的具體時間已經不可考證了,但該詞是由施樂帕洛阿爾托研究中心的Chris Maeda首先提出的。術語「橫切」(crosscutting)是由Gregor Kiczales提出的。
例子
對於一個信用卡應用程序來說,存款、取款、帳單管理是它的主關注點,日誌和持久化將成為橫切整個對象結構的橫切關注點。
語言實現
最廣為人知的面向側面的程式語言是由施樂帕洛阿爾托研究中心開發的AspectJ,該語言可以和Java程式語言結合在一起使用。
是計算機科學中的一個術語,指一種程序設計範型。該範型以一種稱為側面(aspect,又譯作方面)的語言構造為基礎,側面是一種新的模塊化機制,用來描述分散在對象、類或函數中的橫切關注點(crosscutting concern)。
側面的概念源於對物件導向的程序設計的改進,但並不只限於此,它還可以用來改進傳統的函數。與側面相關的編程概念還包括元對象協議、主題(subject)、mixin和委託。
基本概念
* 關注點(concern):對軟體工程有意義的小的、可管理的、可描述的軟體組成部分,一個關注點通常只同一個特定概念或目標相關聯。
* 主關注點(core concern):一個軟體最主要的關注點。
* 關注點分離(separation of concerns,SOC):標識、封裝和操縱只與特定概念、目標相關聯的軟體組成部分的能力,即標識、封裝和操縱關注點的能力。
* 方法(method):用來描述、設計、實現一個給定關注點的軟體構造單位。
* 橫切(crosscut):兩個關注點相互橫切,如果實現它們的方法存在交集。
* 支配性分解(dominant decomposition):將軟體分解成模塊的主要方式。傳統的程式語言是以一種線性的文本來描述軟體的,只採用一種方式(比如:類)將軟體分解成模塊;這導致某些關注點比較好的被捕捉,容易進一步組合、擴展;但還有一些關注點沒有被捕捉,彌散在整個軟體內部。支配性分解一般是按主關注點進行模塊分解的。
* 橫切關注點(crosscutting concerns):在傳統的程式語言中,除了主關注點可以被支配性分解方式捕捉以外,還有許多沒有被支配性分解方式捕捉到的關注點,這些關注點的實現會彌散在整個軟體內部,這時這些關注點同主關注點是橫切的。
* 側面(aspect):在支配性分解的基礎上,提供的一種輔助的模塊化機制,這種新的模塊化機制可以捕捉橫切關注點。
從主關注點中分離出橫切關注點是面向側面的程序設計的核心概念。分離關注點使得解決特定領域問題的代碼從業務邏輯中獨立出來,業務邏輯的代碼中不再含有針對特定領域問題代碼的調用,業務邏輯同特定領域問題的關係通過側面來封裝、維護,這樣原本分散在在整個應用程序中的變動就可以很好的管理起來。
「面向側面的程序設計」(aspect-oriented programming)這一術語出現的具體時間已經不可考證了,但該詞是由施樂帕洛阿爾托研究中心的Chris Maeda首先提出的。術語「橫切」(crosscutting)是由Gregor Kiczales提出的。
例子
對於一個信用卡應用程序來說,存款、取款、帳單管理是它的主關注點,日誌和持久化將成為橫切整個對象結構的橫切關注點。
語言實現
最廣為人知的面向側面的程式語言是由施樂帕洛阿爾托研究中心開發的AspectJ,該語言可以和Java程式語言結合在一起使用。
AOP全名為Aspect-Oriented Programming,故應該是為縮寫詞性!
相關資料
http://zh.wikipedia.org/w/index.php?title=AOP&variant=zh-tw
關係字
詞條貢獻者:
Spencer
sandal522
貢獻者按積分從高到低進行排序
最近更新:2009-11-05
詞條評論
評論字數不可超過500字
- 好評詞條
-
成大醫院
-
thumb generation
-
日本
-
烏龍球
-
Dr.eye