Groovy 使用接口

Java 编程频繁的提倡使用接口,通过这种风格写的代码通过使用的接口引用依赖类,依赖类能在以后进行安全的改变而不用修改原来的程序,如果开发者意外的改变到的类不是相应的接口实例,这种错误在编译的时候将会被发现,groovy 完全支持 java 的接口机制。

一些观点认为单独的接口不是足够的强壮,并且基于合约的设计来获取安全对象替换而不改变你的类库,这样处理更重要。明确的使用抽象方法和继承变得正如使用接口一样重要,groovy 支持 java 的抽象方法,自动启用 assert 语句,并且内建访问测试方法,这意味着也完美的支持方式。 尽管这样,别的一些观点认为动态类型是最佳途径,这样在不降低安全(应该覆盖任何情况的测试)的情况下有更少的类型和更少的脚手架代码。

幸运的是 groovy 很好的支持这种风格,为了给你的每天编写的代码增加乐趣,考虑一下如何在 java 和 groovy 中建立一个插件。

在 java 中,一般情况下你为一个插件机制写一个接口,然后每一个插件有一个这个接口的实现类,在 groovy 中,动态类型允许你更容易的创建和使用符合需要的实现。

你可能仅仅需要两个类作为开发两个插件实现部分,一般情况下,你会有更少的脚手架代码和更少的类。

技巧:如果你决定使用接口,g roovy 提供了使他们更动态的途径,如果你有一个接口MyInterf ace(该接口只有一个方法)和一个闭包 myClosure,你能使用 as 关键字强制将闭包造型为 MyInterf ace,相似的,如果你有一个接口有几个方法,你能创建一个 map(方法名称为 key、对应的闭包为 value)并且强制造型 map 为你的接口类型,参考 groovy 的 wiki 了解更详细的信息。

总之,如果你是从 java 转过来的,你也许使用强接口类型的风格,当使用 groovy 的时 候,你不需要强迫使用任何一种风格,在许多情况下,通过使用动态类型你可以最小化类型的数量;并且如果你真的需要,也可以完全使用接口。