SlideShare a Scribd company logo
DSL in Groovy胡键www.groovyq.net
DSL in GroovyDomainSpecificLanguage
DSL in Groovy几个Groovy DSL的例子
GroovyBuilder
GrailsConfigDependency ConfigURL MappingGORMDataSourceModelingQuery……
Spock
用Groovy构建DSL:基础Method 参数1, 参数2, …
用Groovy构建DSL:基础Closure
用Groovy构建DSL:基础MOPmethodMissinginvokeMethodmetaClass
用Groovy构建DSL:基础Builder
My DSL:例一利用methodMissing模拟GORM部分方法实现:mockDomain.groovy
My DSL:例一利用methodMissing/invokeMethod优点:简单缺点:不太适合稍微复杂一点的DSL,如方法嵌套要实现的方法太多时,实现逻辑也会变复杂,需做特殊处理
My DSL:例二扩展BuilderSupport实现自己的XML Builder实现myBuilder.groovy关键方法:setParentcreateNodenodeCompleted
My DSL:例二扩展BuilderSupport优点:直观,动态缺点:缺乏结构化
My DSL:例三FactoryBuilderSupport将Grails Domain Class输出成另一个工具所需的DSL。实现:DiagramFactoryBuilder.groovy
My DSL:例三使用3步骤定义并实现各节点对象实现各节点对应的Factory,继承AbstractFactory注册各节点的Factory,在FactoryBuilderSupport2个关键类FactoryBuilderSupportAbstractFactory
My DSL:例三利用FactoryBuilderSupport优点:结构化缺点:需先确定DSL的语法节点,对于不可预期的节点无法处理
My DSL:例四扩展Script类模拟机器人控制脚本。(受http://groovyconsole.appspot.com/script/112001启发)实现Robot.groovy
My DSL:例四扩展Script类优点:非常适合作为配置文件、规则文件提供给应用的用户使用缺点:无法直接供应用中的类使用
OpenParty西安:DSL in Groovy

More Related Content

PDF
學習JavaScript_Dom
PPT
Grails敏捷项目开发
PPTX
Rwd開發小工具
PDF
2010 08-14 web-sitei18n
ODP
Js dom
ODP
五行完成網頁多國語系
PPTX
猴子也能懂的Node.js
PDF
Gpars 5-minutes
學習JavaScript_Dom
Grails敏捷项目开发
Rwd開發小工具
2010 08-14 web-sitei18n
Js dom
五行完成網頁多國語系
猴子也能懂的Node.js
Gpars 5-minutes

Viewers also liked (9)

PPT
Os Secoske
PPTX
PDF
Building DSLs with Groovy
PPTX
Groovy to gradle
PPTX
Spring one 2012 Groovy as a weapon of maas PaaSification
KEY
Groovy DSLs, from Beginner to Expert - Guillaume Laforge and Paul King - Spri...
PDF
GR8Conf 2009: Practical Groovy DSL by Guillaume Laforge
PDF
GGUG:Practical DSL Design
PDF
Building an Extensible, Resumable DSL on Top of Apache Groovy
Os Secoske
Building DSLs with Groovy
Groovy to gradle
Spring one 2012 Groovy as a weapon of maas PaaSification
Groovy DSLs, from Beginner to Expert - Guillaume Laforge and Paul King - Spri...
GR8Conf 2009: Practical Groovy DSL by Guillaume Laforge
GGUG:Practical DSL Design
Building an Extensible, Resumable DSL on Top of Apache Groovy
Ad

Similar to OpenParty西安:DSL in Groovy (20)

PPTX
这年头,你只需要懂Node webkit
PPT
MongoDB Basics and Tutorial
PPT
Bluemix Node-Red Part II
PDF
Introduction to Golang final
PPTX
5 Bluemix-LoRa application III
PPT
Pyramid框架介绍
PDF
模块加载策略 - 2012 SDCC, 北京
PDF
Rubyonrails(Chinese)
PPS
基于Android ndk的软件开发简介 放映
PPS
基于Android ndk的软件开发简介 放映
PPT
Nosql七种武器之长生剑 mongodb的使用介绍
PDF
淺談 Groovy 與 Gradle
PPTX
Gradle 和 Android Studio --- Jason Ko
PDF
Responsive Web Design [rebuild as design]
ODP
Java DSL与动态代码生成技术的应用 (上集:DSL部分)
PDF
NodeJS基礎教學&簡介
PPTX
Static Code Analysis 靜態程式碼分析
PDF
Fiddler使用技巧
PPTX
Vic weekly learning_20160504
PPTX
Groovy:Candy for Java Developers
这年头,你只需要懂Node webkit
MongoDB Basics and Tutorial
Bluemix Node-Red Part II
Introduction to Golang final
5 Bluemix-LoRa application III
Pyramid框架介绍
模块加载策略 - 2012 SDCC, 北京
Rubyonrails(Chinese)
基于Android ndk的软件开发简介 放映
基于Android ndk的软件开发简介 放映
Nosql七种武器之长生剑 mongodb的使用介绍
淺談 Groovy 與 Gradle
Gradle 和 Android Studio --- Jason Ko
Responsive Web Design [rebuild as design]
Java DSL与动态代码生成技术的应用 (上集:DSL部分)
NodeJS基礎教學&簡介
Static Code Analysis 靜態程式碼分析
Fiddler使用技巧
Vic weekly learning_20160504
Groovy:Candy for Java Developers
Ad

More from foxgem (8)

PPTX
浅说Vertx
PDF
Our Choice:电子书的新交互方式探讨
PDF
移动开发的性能优化
PPTX
持续交付 - 使用云计算和虚拟化技术
PPTX
Grails:下一代Java Web开发框架
PPTX
Groovy for Java Programmer
PDF
OpenParty西安:What does DevOps mean?
PPT
OpenParty西安:How to be a good copycat?
浅说Vertx
Our Choice:电子书的新交互方式探讨
移动开发的性能优化
持续交付 - 使用云计算和虚拟化技术
Grails:下一代Java Web开发框架
Groovy for Java Programmer
OpenParty西安:What does DevOps mean?
OpenParty西安:How to be a good copycat?

OpenParty西安:DSL in Groovy