演化架构与紧急设计: 语言、表达性与设计:第 1 部分
2009-09-12 00:00:00 来源:WEB开发网四人组的图书现在在术语方面仍有价值,但其实现已经过时了。这些实现解决的很多问题现在在结构上都有了更简洁的方法(通过构建相互影响类的分层结构),语言也更具威力和表达性。
自四人组图书出版以来还发生了另一个有趣的变化。很多语言已经将模式包含在语言本身里。例如,Java 语言在 JDK 1.1 和 1.2 之间改变了集合迭代的样式,用 Iterator 接口取代了 Enumerator,以便使 Java 语言中的迭代器更接近四人组的迭代器模式。语言趋向于包含模式和其他常见惯例,它们作为语言抽象自身的一部分出现。
前几个例子展示了更为现代的基于 Java 的语言包含了四人组模式,该语言中直接包含了迭代器和命令模式。
迭代器模式
四人组的书将迭代器模式定义为:
提供一种方式访问聚合对象的元素,从而无需公开其底层表示法。
迭代器模式是最先添加到 Java 语言中的模式,它是以 Iterator 接口和实现的方式添加的。Groovy 将这一技术进一步发展,添加了内部迭代器作为集合 API 的一部分。这样,您可以使用 each 方法和代码块在集合中轻松迭代,如清单 1 所示。该清单展示了内部迭代器(也称为 push 迭代器,因为它将每个元素依次推到代码块中)。
清单 1. Groovy each 操作符
def numbers = [1,2,3,4]
numbers.each { n ->
println n
}
Groovy 支持各种集合的迭代工作,包括哈希,如清单 2 所示:
清单 2. 在哈希中迭代
def months = [Mar:31, Apr:30, May:31]
months.each {
println it
}
Groovy 还实现了方便的默认行为,为名为 it 的迭代自动提供参数,您可以在代码块中引用。
更多精彩
赞助商链接