WEB开发网
开发学院软件开发Java 演化架构和紧急设计: 利用可重用代码,第 1 部分:... 阅读

演化架构和紧急设计: 利用可重用代码,第 1 部分:代码与设计之间的关系

 2010-05-13 00:00:00 来源:WEB开发网   
核心提示: 清单 4 显示一个类似的重写版本,这一次用的是 Ruby(通过 JRuby): 清单 4. 翻译成 Ruby 的 addOrderFrom() 方法defwrap_in_transactionsetup_data_infrastructurebeginyieldcomplete_transact

清单 4 显示一个类似的重写版本,这一次用的是 Ruby(通过 JRuby):

清单 4. 翻译成 Ruby 的 addOrderFrom() 方法

def wrap_in_transaction 
 setup_data_infrastructure 
 begin 
  yield 
  complete_transaction 
 rescue 
  rollback_transaction 
  throw 
 ensure 
  cleanup 
 end 
end 
 
def add_order_from 
 wrap_in_transaction do 
  add order, user_key_based_on(user_name) 
  add_line_items_from cart, order.order_key 
 end 
end 

与 Java 版本相比,上述代码更类似于 Groovy 代码。Groovy 代码与 Ruby 代码的主要不同点在 Command 模式特征中。在 Ruby 中,任何方法都可以使用代码块,代码块通过方法主体中的 yield 调用执行。因此,在 Ruby 中,甚至不需要指定专门类型的基础结构元素 — 该语言中已具有处理这种常见用法的功能。

抽象的风格

不同的语言以不同的方式处理抽象。阅读本文的人都熟悉一些普遍的抽象风格 — 例如结构化、模块化和面向对象 — 它们出现在很多不同的语言中。当长时间使用一种特定的语言时,它就成了金锤:每个问题看上去就像一个钉子,可以用该语言的抽象来驱动。对于纯面向对象语言(例如 Java 语言)来说,这一点尤为明显,因为主要的抽象就是分层和易变状态。

Java 世界现在对一些函数式语言,例如 Scala 和 Clojure 表现出很大的兴趣。当使用函数式语言编写代码时,您会以不同的方式思考问题的解决方案。例如,在大多数函数式语言中,默认方式是创建不可变变量,而不是可变变量,这与 Java 截然相反。在 Java 代码中,默认情况下数据结构是可变的,必须添加更多的代码,才能使它们具有不变的行为。这意味着以函数式语言编写多线程应用程序要容易得多,因为不可变数据结构与线程交互起来非常自然,因而代码可以很简洁。

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

Tags:演化 架构 紧急

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