实战 Groovy: 使用 Groovy 模板进行 MVC 编程
2009-11-19 00:00:00 来源:WEB开发网
清单 17. 使用模板映射重构原来的代码fle = new File("report.tmpl")
binding = ["clazzes": clzzez]
engine = new SimpleTemplateEngine()
template = engine.createTemplate(fle).make(binding)
nfile.withPrintWriter{ pwriter |
pwriter.println template.toString()
}
现在,清单 17 中的代码对您来说太陈旧了。我利用了清单 16 中的 列表,并将其放入 binding 对象。然后读取 nfile 对象,并将相应的输出内容从 清单 14 中的映射模板写入文件中。
在将这些内容都放入清单 18 之前,您可能希望返回 清单 13 最后看一眼开始时使用的那段蹩脚的代码。下面是新的代码,您可以进行比较一下:
清单 18. 看,新的代码!/**
*
*/
buildReport(bsedir){
ant = new AntBuilder()
scanner = ant.fileScanner {
fileset(dir:bsedir) {
include(name:"**/*class.md5.txt")
}
}
rdir = bsedir + File.separator + "xml" + File.separator
file = new File(rdir)
if(!file.exists()){
ant.mkdir(dir:rdir)
}
nfile = new File(rdir + File.separator + "checksum.xml")
clssez = []
for(f in scanner){
f.eachLine{ line |
iname = formatClassName(bsedir, f.path)
clssez << new CheckSumClass(name:iname, value:line)
}
}
fle = new File("report.tmpl")
binding = ["clazzes": clzzez]
engine = new SimpleTemplateEngine()
template = engine.createTemplate(fle).make(binding)
nfile.withPrintWriter{ pwriter |
pwriter.println template.toString()
}
}
现在,虽然我没有声明要编写非常漂亮的代码,但是这些代码当然不会像原来的代码一样 糟糕 了。回顾一下,我所干的事情不过是将一些蹩脚的 println 替换成 Groovy 的更精巧的模板代码。(一些熟悉重构的人可能会说我应该使用 Extract Method 进一步对代码进行优化。)
结束语
在本月的教程中,我希望已经向您展示了 Groovy 的 视图。更明确地 说,当您需要快速开发一些需要视图的简单程序时,Groovy 的模板框架是普通 Java 编码的一种很好的替代品。模板是很好的一种抽象,如果使用正确,它可以极大地降低应用程序的维护成本。
下一个月,我将向您展示如何使用 Groovy 来构建使用 Groovlets 的 Web 应用程序。现在,享受使用 Groovy 的模板开发吧!
本文示例源代码或素材下载
更多精彩
赞助商链接