WEB开发网
开发学院软件开发Java 轻量级开发的成功秘诀,第 7 部分: Java 替代方案... 阅读

轻量级开发的成功秘诀,第 7 部分: Java 替代方案

 2009-11-11 00:00:00 来源:WEB开发网   
核心提示: for(i=0;i<array.size();i++){System.out.println(array[i]);}在 Ruby 中,要这样写:array.each{|element|putselement}您没必要为迭代如何进行而担心,轻量级开发的成功秘诀,第 7 部分: Java 替代

for(i=0;i<array.size();i++) { 
 System.out.println(array[i]); 
} 

在 Ruby 中,要这样写:

array.each {|element| puts element} 

您没必要为迭代如何进行而担心,因此花费的工作量要少得多。您只是把花括号(我们把这个块叫做 闭包(closure))中的代码传递到数组中,每个方法都知道如何完成迭代。需要迭代器的 Java 集合比我在这里给出的例子更糟糕,因为您被迫声明和使用独立的迭代器。当然,Ruby 也有循环和迭代器,但您不需要使用它们,同样因为有一个以闭包的形式存在的更高的抽象。

闭包不只是用来迭代的。它们也使得许多问题都易于解决:

以一个代码块遍历数据库是容易的: dbh.execute("SELECT * FROM words") do |s| 
 s.fetch_array do |row| 
  puts row.join(", ") 
 end 
end 

划分事务是自然的: Account.transaction(david, mary) do 
 david.withdrawal(100) 
 mary.deposit(100) 
end 

可以在共享代码的主体中隐藏资源管理和异常的冗长细节。使用该策略,文件处理会更加简洁。

单独使用闭包,可以大大限制代码行的数量。当然,可以在 Java 语言中以更多的代码使用匿名代码块来模仿闭包,但这种技术写起来和读起来都有些笨拙。

延续

延续(continuation)是另一个抽象,它变得越来越重要。延续让您能够在任何时刻及时捕获执行状态(使用实例变量和调用栈)。您可以在晚些时候及时返回那一点。对 Web 服务器来说,也许希望在询问用户信息之前捕获一个延续。然后,当用户返回控制权到应用程序服务器时,就可以恢复延续。使用延续服务器,比如 Seaside 和 Iowa,可以编写无状态的 Web 应用程序,就像编写任何其他有状态的用户界面一样。

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

Tags:轻量级 开发 成功

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