編程範式概覽
- 面向過程編程
- 面向對象編程
- 函數式編程
- 事件驅動編程
- 面向切面編程
AOP是什麼
- 是一種編程範式,不是編程語言
- 解決特定問題,不能解決所有問題
- 是OOP的補充,不是替代
AOP的初衷
DRY: Don’t Repeat Yourself (不要寫重複的代碼)
SoC: Separation of Concerns (關注點分離)
關注點分離可以有很多種:
- 水平分離:展示層–> 服務層–>持久層
- 垂直分離:從業務模塊劃分(訂單、庫存等)
- 切面分離:分離功能性需求與非功能性需求
使用AOP的好處
- 集中處理某一關注點/橫切邏輯
- 可以很方便地添加/刪除關注點
- 侵入性少,增強代碼可讀性及可維護性
AOP的應用場景
- 權限控制
- 緩存控制
- 事務控制
- 審計日誌
- 性能監控
- 分佈式追蹤
- 異常處理
- 等等
支持AOP的編程語言
Java、.Net 、 c/c++、 Ruby、Python、PHP…