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

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

 2009-09-12 00:00:00 来源:WEB开发网   
核心提示: 而且 Groovy 支持外部迭代器(也称为 pull 迭代器,因为必须请求集合中的下一项),演化架构与紧急设计: 语言、表达性与设计:第 1 部分(3),如清单 3 所示,这与内置到 Java 语言自身中的迭代器是完全一样的,因为指定可撤销的操作是一个常见需求,所以这个语法变得很重要, 清单 3

而且 Groovy 支持外部迭代器(也称为 pull 迭代器,因为必须请求集合中的下一项),如清单 3 所示。这与内置到 Java 语言自身中的迭代器是完全一样的。

清单 3. pull 迭代器

   
iterator = numbers.iterator() 
while (iterator.hasNext()) { 
 println iterator.next() 
} 

因为迭代器太常见了,所以它根本就算不上是正式的模式;它只是一种语言的特性。这在计算机语言自身的紧急设计中非常常见。

命令模式

四人组的书将命令模式定义为:

将请求压缩为对象,使您能用不同的请求,队列或日志请求,参数化客户机,并支持可撤销的操作。

Java 语言中这种模式的常见实现是创建 Command 类,该类包含 execute() 方法。命令设计模式作为代码块出现在 Groovy 中,是定义在独立的花括号({ 和 })中的任何东西。不强制您创建新类和相应方法,您可以通过调用其 call() 方法或通过在包含代码块(带有或没有参数)的变量名后放置括号来执行代码块。清单 4 显示了示例:

清单 4. Groovy 中带有代码块的命令模式

   
def count = 0 
def commands = [] 
 
1.upto(10) { i -> 
  commands.add { count++ } 
} 
 
println "count is initially ${count}" 
commands.each { cmd -> 
  cmd() 
} 
println "did all commands, count is ${count}" 

支持撤销

在类似匿名内部类的机制中使用代码块的一个优势是其简洁性。因为指定可撤销的操作是一个常见需求,所以这个语法变得很重要。查看清单 5 中的 Groovy 代码,它显示了如何使用代码块和命令设计模式配合支持可撤销的操作:

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

Tags:演化 架构 紧急

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