groovy dsl_Groovy DSL –一个简单的例子

groovy dsl

领域特定语言(DSL)已成为Groovy习语的重要组成部分。 DSL用于本地Groovy构建器,Grails和GORM以及测试框架。 对于开发人员而言,DSL是易用且易于理解的,与传统编程相比,这使实现更加流畅。 但是如何实现DSL? 它在后台如何工作? 本文将演示一个简单的DSL,它可以使开发人员开始了解基本概念。

什么是DSL

DSL旨在解决特定类型的问题。 它们是很短的表达方式,非常适合狭窄的环境。 例如,对于GORM,您可以使用DSL而不是XML来表示Hibernate映射。

static mapping = {
    table 'person'
    columns {
      name column:'name'
    }
  }

DSL的许多理论及其带来的好处已得到充分证明。 请以以下来源为起点:

Groovy中的一个简单DSL示例

以下示例提供了实现内部DSL的简化视图。 框架具有创建DSL的更高级的方法。 但是,此示例确实强调了封闭委托和元对象协议概念,这些概念对于理解DSL的内部工作至关重要。

需求概述

想象一个客户需要一个备忘录生成器。 备忘录需要有一些简单的字段,例如“至”,“来自”和“正文”。 备忘录也可以包含“摘要”或“重要”等部分。 摘要字段是动态的,可以按需提供任何内容。 另外,备忘录需要以三种格式输出:xml,html和文本。

我们选择在Groovy中将其实现为DSL。 DSL结果如下所示:

MemoDsl.make {
    to 'Nirav Assar'
    from 'Barack Obama'
    body 'How are things? We are doing well. Take care'
    idea 'The economy is key'
    request 'Please vote for me'
    xml
}

代码的输出产生:

<memo>
  <to>Nirav Assar</to>
  <from>Barack Obama</from>
  <body>How are things? We are doing well. Take ca
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值