發表文章

目前顯示的是有「開發技術類-AOP-觀念與術語」標籤的文章

自救必看三大準則

AOP 觀念與術語

圖片
AOP全名為Aspect-Oriented Programming,有關於AOP的許多名詞術語都過於抽象,單從字面上並不容易理解其名詞意義,這邊將以之前介紹代理機制的範例來逐一對照以介紹AOP的術語與觀念: Cross-cutting concern 在DynamicProxyDemo專案的例子中,記錄的 動作原先被橫切(Cross-cutting)入至HelloSpeaker本身所負責的商務流程之中,另外類似於日誌這類的動作,如安全 (Security)檢查、交易(Transaction)等系統層面的服務(Service),在一些應用程式之中常被見到安插至各個物件的處理流程之 中,這些動作在AOP的術語中被稱之為Cross-cutting concerns。 以圖片說明可強調出Cross-cutting concerns的意涵,例如原來的商務流程是很單純的: Cross-cutting concerns若直接撰寫在負責某商務的物件之流程中,會使得維護程式的成本增高,例如若您今天要將物件中的記錄功能修改或是移除該服務,則必須修改所 有撰寫曾記錄服務的程式碼,然後重新編譯,另一方面,Cross-cutting concerns混雜於商務邏輯之中,使得商務物件本身的邏輯或程式的撰寫更為複雜。 現在為了要加入日誌(Logging)與安全(Security)檢查等服務,物件的程式碼中若被硬生生的寫入相關的Logging、Security程式片段,則可使用以下圖解表示出Cross-cutting與Cross-cutting concerns的概念: Cross-cutting concerns若直接撰寫在負責某商務的物件之流程中,會使得維護程式的成本增高,例如若您今天要將物件中的日誌功能修改或是移除該服務,則必須修改所 有撰寫曾日誌服務的程式碼,然後重新編譯,另一方面,Cross-cutting concerns混雜於商務邏輯之中,使得商務物件本身的邏輯或程式的撰寫更為複雜。 Aspect 將散落於各個商務物件之中的Cross-cutting concerns收集起來,設計各個獨立可重用的物件,這些物件稱之為Aspect,例如在  動態代理  中 將日誌的動作設計為一個LogHandler類別...