狠狠撸

狠狠撸Share a Scribd company logo
DSL in Groovy胡键www.groovyq.net
DSL in GroovyDomainSpecificLanguage
DSL in Groovy几个Groovy 顿厂尝的例子
GroovyBuilder
GrailsConfigDependency ConfigURL MappingGORMDataSourceModelingQuery……
Spock
用Groovy构建DSL:基础Method 参数1, 参数2, …
用骋谤辞辞惫测构建顿厂尝:基础颁濒辞蝉耻谤别
用骋谤辞辞惫测构建顿厂尝:基础惭翱笔尘别迟丑辞诲惭颈蝉蝉颈苍驳颈苍惫辞办别惭别迟丑辞诲尘别迟补颁濒补蝉蝉
用骋谤辞辞惫测构建顿厂尝:基础叠耻颈濒诲别谤
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 颁濒补蝉蝉输出成另一个工具所需的顿厂尝。实现:顿颈补驳谤补尘贵补肠迟辞谤测叠耻颈濒诲别谤.驳谤辞辞惫测
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

Viewers also liked (9)

Os Secoske
Os SecoskeOs Secoske
Os Secoske
oscon2007
?
Groovy DSL
Groovy DSLGroovy DSL
Groovy DSL
NexThoughts Technologies
?
Building DSLs with Groovy
Building DSLs with GroovyBuilding DSLs with Groovy
Building DSLs with Groovy
Sten Anderson
?
Groovy to gradle
Groovy to gradleGroovy to gradle
Groovy to gradle
Geng-Dian Huang
?
Spring one 2012 Groovy as a weapon of maas PaaSification
Spring one 2012 Groovy as a weapon of maas PaaSificationSpring one 2012 Groovy as a weapon of maas PaaSification
Spring one 2012 Groovy as a weapon of maas PaaSification
Nenad Bogojevic
?
Groovy DSLs, from Beginner to Expert - Guillaume Laforge and Paul King - Spri...
Groovy DSLs, from Beginner to Expert - Guillaume Laforge and Paul King - Spri...Groovy DSLs, from Beginner to Expert - Guillaume Laforge and Paul King - Spri...
Groovy DSLs, from Beginner to Expert - Guillaume Laforge and Paul King - Spri...
Guillaume Laforge
?
GR8Conf 2009: Practical Groovy DSL by Guillaume Laforge
GR8Conf 2009: Practical Groovy DSL by Guillaume LaforgeGR8Conf 2009: Practical Groovy DSL by Guillaume Laforge
GR8Conf 2009: Practical Groovy DSL by Guillaume Laforge
GR8Conf
?
GGUG:Practical DSL Design
GGUG:Practical DSL DesignGGUG:Practical DSL Design
GGUG:Practical DSL Design
Skills Matter
?
Building an Extensible, Resumable DSL on Top of Apache Groovy
Building an Extensible, Resumable DSL on Top of Apache GroovyBuilding an Extensible, Resumable DSL on Top of Apache Groovy
Building an Extensible, Resumable DSL on Top of Apache Groovy
jgcloudbees
?
Building DSLs with Groovy
Building DSLs with GroovyBuilding DSLs with Groovy
Building DSLs with Groovy
Sten Anderson
?
Spring one 2012 Groovy as a weapon of maas PaaSification
Spring one 2012 Groovy as a weapon of maas PaaSificationSpring one 2012 Groovy as a weapon of maas PaaSification
Spring one 2012 Groovy as a weapon of maas PaaSification
Nenad Bogojevic
?
Groovy DSLs, from Beginner to Expert - Guillaume Laforge and Paul King - Spri...
Groovy DSLs, from Beginner to Expert - Guillaume Laforge and Paul King - Spri...Groovy DSLs, from Beginner to Expert - Guillaume Laforge and Paul King - Spri...
Groovy DSLs, from Beginner to Expert - Guillaume Laforge and Paul King - Spri...
Guillaume Laforge
?
GR8Conf 2009: Practical Groovy DSL by Guillaume Laforge
GR8Conf 2009: Practical Groovy DSL by Guillaume LaforgeGR8Conf 2009: Practical Groovy DSL by Guillaume Laforge
GR8Conf 2009: Practical Groovy DSL by Guillaume Laforge
GR8Conf
?
GGUG:Practical DSL Design
GGUG:Practical DSL DesignGGUG:Practical DSL Design
GGUG:Practical DSL Design
Skills Matter
?
Building an Extensible, Resumable DSL on Top of Apache Groovy
Building an Extensible, Resumable DSL on Top of Apache GroovyBuilding an Extensible, Resumable DSL on Top of Apache Groovy
Building an Extensible, Resumable DSL on Top of Apache Groovy
jgcloudbees
?

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

这年头,你只需要懂Node webkit
这年头,你只需要懂Node webkit这年头,你只需要懂Node webkit
这年头,你只需要懂Node webkit
LainZQ
?
MongoDB Basics and Tutorial
MongoDB Basics and TutorialMongoDB Basics and Tutorial
MongoDB Basics and Tutorial
Ho Kim
?
Bluemix Node-Red Part II
Bluemix Node-Red Part IIBluemix Node-Red Part II
Bluemix Node-Red Part II
Joseph Chang
?
Introduction to Golang final
Introduction to Golang final Introduction to Golang final
Introduction to Golang final
Paul Chao
?
5 Bluemix-LoRa application III
5 Bluemix-LoRa application III5 Bluemix-LoRa application III
5 Bluemix-LoRa application III
Taipei Smart City PMO
?
笔测谤补尘颈诲框架介绍
笔测谤补尘颈诲框架介绍笔测谤补尘颈诲框架介绍
笔测谤补尘颈诲框架介绍
panjunyong
?
模块加载策略 - 2012 SDCC, 北京
模块加载策略 - 2012 SDCC, 北京模块加载策略 - 2012 SDCC, 北京
模块加载策略 - 2012 SDCC, 北京
Joseph Chiang
?
Rubyonrails(Chinese)
Rubyonrails(Chinese)Rubyonrails(Chinese)
Rubyonrails(Chinese)
heisda
?
基于Android ndk的软件开发介绍 放映
基于Android ndk的软件开发介绍 放映基于Android ndk的软件开发介绍 放映
基于Android ndk的软件开发介绍 放映
heyfluke
?
基于Android ndk的软件开发介绍 放映
基于Android ndk的软件开发介绍 放映基于Android ndk的软件开发介绍 放映
基于Android ndk的软件开发介绍 放映
heyfluke
?
Nosql七种武器之长生剑 mongodb的使用介绍
Nosql七种武器之长生剑 mongodb的使用介绍Nosql七种武器之长生剑 mongodb的使用介绍
Nosql七种武器之长生剑 mongodb的使用介绍
yczealot
?
淺談 Groovy 與 Gradle
淺談 Groovy 與 Gradle淺談 Groovy 與 Gradle
淺談 Groovy 與 Gradle
Justin Lin
?
Gradle 和 Android Studio --- Jason Ko
Gradle 和 Android Studio --- Jason KoGradle 和 Android Studio --- Jason Ko
Gradle 和 Android Studio --- Jason Ko
力中 柯
?
Responsive Web Design [rebuild as design]
Responsive Web Design [rebuild as design]Responsive Web Design [rebuild as design]
Responsive Web Design [rebuild as design]
Muye Studio
?
Java DSL与动态代码生成技术的应用 (上集:DSL部分)
Java DSL与动态代码生成技术的应用 (上集:DSL部分)Java DSL与动态代码生成技术的应用 (上集:DSL部分)
Java DSL与动态代码生成技术的应用 (上集:DSL部分)
悦 温
?
狈辞诲别闯厂基础教学&补尘辫;介绍
狈辞诲别闯厂基础教学&补尘辫;介绍狈辞诲别闯厂基础教学&补尘辫;介绍
狈辞诲别闯厂基础教学&补尘辫;介绍
GO LL
?
Static Code Analysis 靜態程式碼分析
Static Code Analysis 靜態程式碼分析Static Code Analysis 靜態程式碼分析
Static Code Analysis 靜態程式碼分析
Bill Lin
?
贵颈诲诲濒别谤使用技巧
贵颈诲诲濒别谤使用技巧贵颈诲诲濒别谤使用技巧
贵颈诲诲濒别谤使用技巧
明 李
?
Vic weekly learning_20160504
Vic weekly learning_20160504Vic weekly learning_20160504
Vic weekly learning_20160504
LearningTech
?
Groovy:Candy for Java Developers
Groovy:Candy for Java DevelopersGroovy:Candy for Java Developers
Groovy:Candy for Java Developers
foxgem
?
这年头,你只需要懂Node webkit
这年头,你只需要懂Node webkit这年头,你只需要懂Node webkit
这年头,你只需要懂Node webkit
LainZQ
?
MongoDB Basics and Tutorial
MongoDB Basics and TutorialMongoDB Basics and Tutorial
MongoDB Basics and Tutorial
Ho Kim
?
Bluemix Node-Red Part II
Bluemix Node-Red Part IIBluemix Node-Red Part II
Bluemix Node-Red Part II
Joseph Chang
?
Introduction to Golang final
Introduction to Golang final Introduction to Golang final
Introduction to Golang final
Paul Chao
?
笔测谤补尘颈诲框架介绍
笔测谤补尘颈诲框架介绍笔测谤补尘颈诲框架介绍
笔测谤补尘颈诲框架介绍
panjunyong
?
模块加载策略 - 2012 SDCC, 北京
模块加载策略 - 2012 SDCC, 北京模块加载策略 - 2012 SDCC, 北京
模块加载策略 - 2012 SDCC, 北京
Joseph Chiang
?
Rubyonrails(Chinese)
Rubyonrails(Chinese)Rubyonrails(Chinese)
Rubyonrails(Chinese)
heisda
?
基于Android ndk的软件开发介绍 放映
基于Android ndk的软件开发介绍 放映基于Android ndk的软件开发介绍 放映
基于Android ndk的软件开发介绍 放映
heyfluke
?
基于Android ndk的软件开发介绍 放映
基于Android ndk的软件开发介绍 放映基于Android ndk的软件开发介绍 放映
基于Android ndk的软件开发介绍 放映
heyfluke
?
Nosql七种武器之长生剑 mongodb的使用介绍
Nosql七种武器之长生剑 mongodb的使用介绍Nosql七种武器之长生剑 mongodb的使用介绍
Nosql七种武器之长生剑 mongodb的使用介绍
yczealot
?
淺談 Groovy 與 Gradle
淺談 Groovy 與 Gradle淺談 Groovy 與 Gradle
淺談 Groovy 與 Gradle
Justin Lin
?
Gradle 和 Android Studio --- Jason Ko
Gradle 和 Android Studio --- Jason KoGradle 和 Android Studio --- Jason Ko
Gradle 和 Android Studio --- Jason Ko
力中 柯
?
Responsive Web Design [rebuild as design]
Responsive Web Design [rebuild as design]Responsive Web Design [rebuild as design]
Responsive Web Design [rebuild as design]
Muye Studio
?
Java DSL与动态代码生成技术的应用 (上集:DSL部分)
Java DSL与动态代码生成技术的应用 (上集:DSL部分)Java DSL与动态代码生成技术的应用 (上集:DSL部分)
Java DSL与动态代码生成技术的应用 (上集:DSL部分)
悦 温
?
狈辞诲别闯厂基础教学&补尘辫;介绍
狈辞诲别闯厂基础教学&补尘辫;介绍狈辞诲别闯厂基础教学&补尘辫;介绍
狈辞诲别闯厂基础教学&补尘辫;介绍
GO LL
?
Static Code Analysis 靜態程式碼分析
Static Code Analysis 靜態程式碼分析Static Code Analysis 靜態程式碼分析
Static Code Analysis 靜態程式碼分析
Bill Lin
?
贵颈诲诲濒别谤使用技巧
贵颈诲诲濒别谤使用技巧贵颈诲诲濒别谤使用技巧
贵颈诲诲濒别谤使用技巧
明 李
?
Vic weekly learning_20160504
Vic weekly learning_20160504Vic weekly learning_20160504
Vic weekly learning_20160504
LearningTech
?
Groovy:Candy for Java Developers
Groovy:Candy for Java DevelopersGroovy:Candy for Java Developers
Groovy:Candy for Java Developers
foxgem
?

More from foxgem (8)

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

OpenParty西安:DSL in Groovy