WEB开发网
开发学院软件开发Java 利用可重用代码,第 2 部分:捕捉惯用模式 阅读

利用可重用代码,第 2 部分:捕捉惯用模式

 2010-06-24 00:00:00 来源:WEB开发网   
核心提示: 该类必须执行相当数量的工作来确保一个国家名的值是惟一的,不过它也展示了属性在 Java 编程中的强大功能,利用可重用代码,第 2 部分:捕捉惯用模式(7), 属性是 Java 语言中备受青睐的一部分,您可以通过它们精确地定义有较广影响而在目标类中有较少语法残留的行为,在一个 if 块中包装方法声

该类必须执行相当数量的工作来确保一个国家名的值是惟一的,不过它也展示了属性在 Java 编程中的强大功能。

属性是 Java 语言中备受青睐的一部分。您可以通过它们精确地定义有较广影响而在目标类中有较少语法残留的行为。但是,与 JRuby 等 JVM 上更具表达性的语言相比,它们所做的工作仍然很有限。

使用 JRuby 的 sticky 属性

Ruby 语言也有属性(不过它们不像 “属性” 一样有特定名称 — 它们是 Ruby 提供的其中一种元程序设计方法)。这里有一个例子。请看清单 11 中的测试类:

清单 11. 测试一个复杂的运算

class TestCalculator < Test::Unit::TestCase 
 def test_complex_calculation 
  assert_equal(4, Calculator.new.complex_calculation) 
 end 
end              

如果 complex_calculation 方法运行时间较长,您只想在执行验收测试时运行它,而不想在单元测试期间运行它。进行该限制的一种方式见清单 12:

清单 12. 限制测试范围

class TestCalculator < Test::Unit::TestCase 
 
 if ENV['BUILD'] == 'ACCEPTANCE' 
  def test_complex_calculation 
    assert_equal(4, Calculator.new.complex_calculation)   
  end 
 end 
  
end 

这是与测试相关的一种技术惯用模式,我可在多个上下文中轻松预见该测试的有用性。在一个 if 块中包装方法声明为我的代码增加了复杂度,因为并非所有方法声明都使用相同的缩进。因此我将使用一个属性捕捉该模式,如清单 13 所示:

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

Tags:利用 重用 代码

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