面向特性編程

面向特性編程@OP)是一種程序層面的標記技術。編程者可以給程序元素(例如類和方法)標記上特性(attribute),來指示它們包含特定於應用或特定於領域的語義。

簡介

編輯

特性將一個應用的核心邏輯(或業務邏輯)同特定於應用或特定於領域的語義(比如日誌和網頁服務功能)分離開來。

例如,一些編程者可以定義「logging」特性並把它關聯於一個方法,來指示這個方法應當實現一個日誌功能,而其他編程者可以定義一個「web service」特性並把它關聯於一個類,來指示這個類應當實現為一個網頁服務。通過在程序代碼中隱藏這些語義的實現細節,特性增加了編程抽象層次並減少了編程複雜性,導致了更簡單和更可讀的程序。

關聯了特性的程序元素由支持工具(比如預處理器)轉化成更詳細的程序。例如,一個預處理可以向關聯了「logging」特性的方法插入一個日誌程序。

各種語言中的面向特性編程

編輯

隨着J2SE 5.0發行包含了「Metadata Facility for Java」(JSR-175),可以即時採用面向特性編程,這項技術後來發展為Java註解XDoclet英語XDoclet庫使得更早版本的Java也可以採用面向特性編程。

C#語言從最早期發行就支持特性。但是這些特性被用於得到運行時間信息,而不被預處理器所使用(在C#參考實現中一個都沒有)。

統一建模語言(UML)支持叫作stereotype英語stereotype (UML)的一種特性。

Hack程式語言支持特性。特性可以附加到各種程序實體上,關於這些特性的信息可以通過反射來實時檢索。

工具

編輯

引用

編輯
  1. ^ Annotation Processing Tool (apt)頁面存檔備份,存於互聯網檔案館
  2. ^ Spoon頁面存檔備份,存於互聯網檔案館), an Annotation-Driven Java Program Transformer
  3. ^ XDoclet, a Javadoc-Driven Program Generator

外部連結

編輯