| 1022 | == AOP 專有名詞 == |
| 1023 | |
| 1024 | * Aspect |
| 1025 | |
| 1026 | 將散落於各個商務物件之中的Cross-cutting concerns收集起來,設計各個獨立可重用的物件,這些物件稱之為Aspect, |
| 1027 | |
| 1028 | 例如在 動態代理 中將日誌的動作設計為一個LogHandler類別,LogHandler類別在AOP的術語就是Aspect的一個具體實例 |
| 1029 | |
| 1030 | * Advice |
| 1031 | |
| 1032 | Aspect的具體實作稱之為Advice,以日誌的動作而言,Advice中會包括真正的日誌程式碼是如何實作的, |
| 1033 | |
| 1034 | 像是動態代理 中的LogHandler類別就是Advice的一個具體實例,Advice中包括了Cross-cutting concerns的行為或所要提供的服務。 |
| 1035 | |
| 1036 | * Joinpoint |
| 1037 | |
| 1038 | Aspect在應用程式執行時加入商務流程的點或時機稱之為Joinpoint |
| 1039 | |
| 1040 | * Pointcut |
| 1041 | |
| 1042 | Pointcut是一個定義,藉由這個定義您可以指定某個Aspect在哪些Joinpoint時被應用至應用程式之上 |
| 1043 | |
| 1044 | * Target |
| 1045 | |
| 1046 | 一個Advice被應用的對象或目標物件, |
| 1047 | |
| 1048 | 例如 動態代理 中的HelloSpeaker就是LogHandler這個Advice的Target。 |
| 1049 | |
| 1050 | * Introduction |
| 1051 | |
| 1052 | 對於一個現存的類別,Introduction可以為其增加行為,而不用修改該類別的程式,具體的說,您可以為某個已撰寫、編譯完成的類別,在執行時期動態加入一些方法或行為,而不用修改或新增任何一行程式碼。 |
| 1053 | |
| 1054 | * Proxy |
| 1055 | |
| 1056 | 在之前 從代理機制初探 AOP 與 動態代理 中,已經使用實際的程式範例介紹過代理機制的實現,Spring的AOP主要是透過動態代理來完成。 |
| 1057 | |
| 1058 | * Weave |
| 1059 | |
| 1060 | Advice被應用至物件之上的過程稱之為縫合(Weave) |
| 1061 | |
| 1062 | [Image(http://caterpillar.onlyfun.net/Gossip/SpringGossip/images/AOPConcept-3.JPG)] |
| 1063 | |
| 1064 | |
| 1065 | |