演化架构和紧急设计: 使用 Groovy 构建 DSL
2010-10-09 08:12:32 来源:WEB开发网清单 1. 测试演示 camelize()方法
class TestStringCategory extends GroovyTestCase {
def expected = ["event_map" : "eventMap",
"name" : "name", "test_date" : "testDate",
"test_string_with_lots_of_breaks" : "testStringWithLotsOfBreaks",
"String_that_has_init_cap" : "stringThatHasInitCap" ]
void test_Camelize() {
use (StringCategory) {
expected.each { key, value ->
assertEquals value, key.camelize()
}
}
}
}
在 清单 1 中,我使用原始的和转换后的案例创建了一个 expected 散列值,然后根据映射的迭代包装 StringCategory,希望将每个关键词驼峰化(camelized)。注意在 use 块中,您不需要特别做什么就可以调用类中的新方法。
StringCategory 的代码在清单 2 中显示:
清单 2. StringCategory 类
class StringCategory {
static String camelize(String self) {
def newName = self.split("_").collect() {
it.substring(0, 1).toUpperCase() + it.substring(1, it.length())
}.join()
newName.substring(0, 1).toLowerCase() + newName.substring(1, newName.length())
}
}
categories 是一个常规类,包含静态方法。静态方法必须要有一个参数,这是您将要增加的类型。在 清单 2 中,我声明了一个单独的静态方法,接收 String 参数(通常称为 self,但是您可以随意为其命名),代表我向其中添加方法的类。方法体包含 Groovy 代码,通过下划线将字符串分成带分隔符的几块(这就是 split("_") 方法所做的),然后将字符串收集到一起,在合适的地方使用大写字母将它们拼接起来。最后一行确保返回的第一个字符是小写的。
更多精彩
赞助商链接