WEB开发网
开发学院软件开发Java 演化架构与紧急设计: 语言、表达性与设计:第 1 部... 阅读

演化架构与紧急设计: 语言、表达性与设计:第 1 部分

 2009-09-12 00:00:00 来源:WEB开发网   
核心提示: 四人组的图书现在在术语方面仍有价值,但其实现已经过时了,演化架构与紧急设计: 语言、表达性与设计:第 1 部分(2),这些实现解决的很多问题现在在结构上都有了更简洁的方法(通过构建相互影响类的分层结构),语言也更具威力和表达性,如清单 2 所示: 清单 2. 在哈希中迭代defmonths=[M

四人组的图书现在在术语方面仍有价值,但其实现已经过时了。这些实现解决的很多问题现在在结构上都有了更简洁的方法(通过构建相互影响类的分层结构),语言也更具威力和表达性。

自四人组图书出版以来还发生了另一个有趣的变化。很多语言已经将模式包含在语言本身里。例如,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 的迭代自动提供参数,您可以在代码块中引用。

上一页  1 2 3 4 5 6 7  下一页

Tags:演化 架构 紧急

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接