DSL(Domain Specific language)
在真正了解领域模型(领域内的概念类或现实世界中对象的可视化表示的模型)前对DSL还不太了解。
最近正好在支持一个项目做领域建模,正好写点我对DSL的理解。
DSL如果按照机器翻译多半叫做:领域定义语言....
我理解DSL就是一种描述现实问题的语言,用这种语言去实现现实业务和代码逻辑的桥梁。
我理解的DSL的位置在业务模型和软件模型之间。
实际业务---领域建模(DSL)---软件模型(UML)----程序代码(C# , VB.NET , Java ...)
下面用一个实际例子来描述DSL的作用
(1) 业务场景:
如果某销售的销售业绩超过1800K,那么该员工就可以获得晋升。
(2) DSL来定义这样一个业务:
foreach [Sales]
if (total [Amount] of [The Sale] > 1800K)
[The Sale] do a [Promotion] .
end if
end foreach
(3) 对象模型:
Sale
|--Name(String)
|--Amount(Int)
HRInterface
|--IDoPromotion(Sale theSale);
|--List<Sale> GetAllSales();
(4) 程序代码:
.....函数部分代码略
.......................
List<Sale> sales = GetAllSales();
foreach(Sale sale in sales){
if(sale.amount > 1800){
DoPromotion();
}
}
所以我理解DSL本身不是一个新的语言,也没有具体规则。
仅仅是为了方便我们理解业务模型的辅助工具而已。
转自:http://8376eric.blog.163.com/blog/static/9301693200810239166461/