首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

切面導向程式設計:橫切關注點的模組化之道

     編輯:Java 相關知識

AOP 的定位:分支、補充還是超越?

引號問 AOP 與 OOP 關係。冒號拒絕貼標籤:宏觀看,AOP 是 SoC(關注點分離)與 DRY(不要重複)原則應用;微觀看,AOP 脫離 OOP 藩籬自成體系,滲透過程式、函數式、邏輯式語言,具聲明式特徵,成新模組化方式。

抽象與分解:從庖丁解牛到切面

SoC/DRY 治療代碼「紛亂如麻」與「疊床架屋」。抽象→分解→模組化,如庖丁解牛「目無全牛,游刃有餘」。範式本質皆抽象分解:過程式抽象過程、函數式抽象函數、邏輯式抽象斷言、OOP 抽象對象、併發抽象進程、泛型抽象算法、元程式抽象程式、AOP 抽象切面。原則:單一化、正交化(高內聚低耦合)。正交即向量投影為零,互不影響。

核心概念:接入點、切入點、建議

橫切關注點:與縱向主流執行正交的邏輯碎片(日誌、追蹤、效能、異常、安全、事務)。傳統方式無法提煉。AOP 封裝至 `Aspect`,綁定執行點。`join point`(接入點,如方法調用前後)、`pointcut`(切入點,符合條件的接入點集合,如所有 `set*` 方法)、`advice`(建議,綁定的代碼)。`advice` 定義於切入點,執行於接入點。切入點條件表達式具廣泛性與預見性(新代碼自動附著),是威力亦是麻煩源。

術語翻譯的誤導與讀原文的必要

冒號痛批譯書誤導:`join point` 譯「連接點」缺乏動感方向性;`advice` 譯「通知」近乎荒謬——`advice` 是額外流程/建議措施,非信息。英文好者技術不好,技術好者英文不好,兩好者不屑譯。勸程式員讀原版書、文檔:英語也是程式語言,專業躍升必讀權威原文。

實現機理:編織

程式如管道,AOP 鑽孔注入代碼流。關鍵是「編織」:靜態編織(編譯期/載入期修改源碼/位元碼,如 AspectJ、AspectC++)、動態編織(運行時代理技術,如 AspectWerkz、Spring、JBoss AOP)。AOP 適用大中型程式,小程式屬牛刀殺雞。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved