WEB开发网
开发学院软件开发Java 实战 Groovy: Groovy 的腾飞 阅读

实战 Groovy: Groovy 的腾飞

 2009-11-19 00:00:00 来源:WEB开发网   
核心提示: 您是说存在歧义?您可能注意到,在使用 Groovy 时,实战 Groovy: Groovy 的腾飞(7),有一项微妙的功能可以让您获得方法引用,并随意调用这个引用,我在下面用 Groovy 重新定义了这些示例,在清单 9 中,可以将方法指针当作调用对象方法的方便机制,关于方法指针

您是说存在歧义?

您可能注意到,在使用 Groovy 时,有一项微妙的功能可以让您获得方法引用,并随意调用这个引用。可以将方法指针当作调用对象方法的方便机制。关于方法指针,有意思的事情是:它们的使用可能就表明代码违反了迪米特法则。

您可能会问“什么是迪米特法则”呢?迪米特法则使用只与直接朋友对话 这句格言指出:我们应当避免调用由另一个对象方法返回的对象上的方法。例如,如果 Foo 对象公开了一个 Bar 对象类型,那么客户应当通过 Foo 访问 Bar 的行为。结果可能是一些脆弱的代码,因为对某个对象的更改会传播到整个范围。

一位受尊敬的学者写了一篇优秀的文章,叫做“The Paperboy, the Wallet, and the Law of Demeter”。这篇文章中的示例是用 Java 语言编写的;但是,我在下面用 Groovy 重新定义了这些示例。在清单 9 中,可以看到这些代码演示了迪米特法则 —— 如何用它洗劫人们的钱包!


清单 9. 迪米特在行动(同情啊,同情!)
package com.vanward.groovy 
import java.math.BigDecimal 
class Customer { 
 @Property firstName 
 @Property lastName 
 @Property wallet 
} 
class Wallet { 
 @Property value; 
 def getTotalMoney() { 
 return value; 
 } 
 
 def setTotalMoney(newValue) { 
 value = newValue; 
 } 
 def addMoney(deposit) { 
 value = value.add(deposit) 
 } 
 def subtractMoney(debit) { 
 value = value.subtract(debit) 
 } 
} 

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

Tags:实战 Groovy Groovy

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