關於代碼生成

代碼生成的主要幾種實現方式(來自Jack Herrington《Code Generation in action》)
1、模板技術:代碼生成通常意味着創建具有複雜結構文本類型的文件。爲了維護生成器的簡單性和完整性,你可以使用文本模板工具,這樣你可以把邏輯的定義和邏輯的代碼格式相分離,這是最理想的情況。

模板一直以來都是CodeGeneration的主要實現手段。C++使用模板來實現泛型機制。而衆多的建模工具和IDE工具都使用模板來重用代碼。在Apache組織的旗下,有一個名爲Velocity的項目,它的目的就是提供一種易用的模板技術。Velocity使用了一種腳本語言,叫做Velocity Template Language (VTL)。目前,Velocity主要用於生成Web站點的動態內容。此外,還有更出色的FreeMaker,它比Velocity更全面,可以說Velocity是輕量級的模板技術,而Freemaker是一個強大重量的模板引擎,相比velocity而言,其強大的過程調用、遞歸和閉包回調功能讓freemaker可以完成幾乎所有我們所想的功能。此外還有很多的模板技術,這裏就不一一介紹了。

2、面向屬性編程

英文縮寫雖然同樣都是AOP,但面向屬性編程(Attribute-Oriented Programming )和麪向切面編程(Aspect-Oriented Programming )可不是一回事。面向屬性編程是通過在代碼中添加元數據(屬性)的方式來自動產生代碼,添加功能。而這方面最優秀的軟件莫過於xDoclet。

XDoclet 是一個通用的代碼生成實用程序,是一個擴展的Javadoc Doclet引擎(現已與Javadoc Doclet獨立),XDoclet是EJBDoclet的後繼者,而EJBDoclet是由Rickard Oberg發起的。它允許您使用象 JavaDoc 標記之類的東西來向諸如類、方法和字段之類的語言特徵添加元數據。隨後,它利用這些額外的元數據來生成諸如部署描述符和源代碼之類的相關文件。可以讓你創建自己的javadoc @tags進而利用XDoclet中的Templet enging基於這些@tags生成源代碼或其他文件。

3、MDA(Model Driven Architecture模型驅動架構)

MDA能夠將特定的模型轉換爲特定平臺的代碼。AndraMDA就是其中的代表者。在具體實現上,AndraMDA主要採用了模板技術,同時,它也利用了xDoclet技術。所以,AndraMDA是在前兩項技術的基礎上實現CodeGeneration的。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章