`
Javabengou
  • 浏览: 170398 次
  • 性别: Icon_minigender_1
  • 来自: 郴州
社区版块
存档分类
最新评论

groovy闭包 (PK) Java IOC

阅读更多

N久没写东西,今天突发想法,写下来,废话少说,干活,先看几段代码:

 求和

 

def sum(n)
{
total  =  0
for(int i  =  2;  i  <=  n;  i  +=  2)
{
total  +=  i
}
total
}
println
"Sum  of  even  numbers  from  1  to  10  is  ${sum(10)}"

 

 乘法

 

def product(n)
{
prod  =  1
for(int i  =  2;  i  <=  n;  i  +=  2)
{
prod  *=  i
}
prod
}
println
"Product  of  even  numbers  from  1  to  10  is  ${product(10)}"
def sqr(n)
{
squared  =  []
for(int i  =  2;  i  <=  n;  i  +=  2)
{
squared  <<  i  **  2
}
squared
}

 

 上面三段代码,只是简单的运算,如果我们按照普通的写法就是这样了,如果你只是会写代码,那么最好别学软件开发了,为什么,我们要尽量的使自己的工作简单,你会不会觉得3个运算要写3个方法了?

如果我们想想IOC:在一个方法定义的参数中定义接口类型(当然Groovy对这个更加动态),然后在实际的调用当中把具体的类型传递给这个方法。这是IOC的体现!

那么现在我们来看看闭包:

 

def pickEven(n,  block)
{
for(int i  =  2;  i  <=  n;  i  +=  2)
{
block(i)
}
}
pickEven(10,  {  println it  }  )

 

 上面这段代码,如果按java的意思,也算的上一个IOC的实现,为什么,我们的block就是一个抽象类型,而最下面对pickEven(10, { println it } )方法的调用,把block用闭包{ println it }来代替了(groovy的闭包也是对象,一切都是对象),{ println it }就是实际的类型对吧,那么上面的3段代码都用闭包来实现会是什么样?

 

pickEven(10)  {  println it  }

 

 先说明下:

这段代码 { println it }在方法的外面,因为groovy中,如果闭包是最后一个参数,可以提取到方法外

求和

 

total  =  0
pickEven(10)  {  total  +=  it  }
println
"Sum  of  even  numbers  from  1  to  10  is  ${total}"

 

 乘法

 

product  =  1
pickEven(10)  {  product  *=  it  }
println
"Product  of  even  numbers  from  1  to  10  is  ${product}"

 

 感觉如何?

groovy的闭包是不是比java的IOC原理更加让你WOW!!!!

闭包就是个代码块,而在groovy中闭包是对象,这样,我们可以先定义一个方法,方法其中的一个参数就是闭包(最好把闭包定义在最后一个参数位置,个人意见,因为这样我们可以简写),那么A方法在最后的参数位置定义了一个闭包,B方法在调用A的时候就可以把A方法需要做的事情,在A(){XXX}的XXX中写上!!!

 

东西就写到这里了,至于能不能理解看每个人的想法了,祝大家groovy中找到快乐!

 

分享到:
评论
8 楼 Javabengou 2008-11-01  
看你把闭包当成什么
如果是对象,如果只看做方法
7 楼 RayChase 2008-10-27  
这也许算是Groovy闭包修整的一个体现,主流程方法来决定,但参数的传入和值的返回都可以通过一个闭包来修整。
6 楼 RayChase 2008-10-27  
这个理解还是蛮有意思的,至于扯上控制反转略感牵强。
5 楼 racnow 2008-10-22  
我靠,搞点难度的
4 楼 xiaobin268 2008-10-21  
我靠,学习了。
3 楼 rockjava 2008-10-17  
没看明白这和IOC 有什么关系吗?
2 楼 shiren1118 2008-10-17  
我怎么感觉像template pattern呢?(*^__^*) 嘻嘻……
1 楼 liliang_xf 2008-10-17  
狗哥的广告真吊,哈哈哈

相关推荐

    groovy和Java相互调用1

    Groovy 调用 Java 类groovy 调用 Java class 十分方便,只需要在类前导入该 Java 类,在 Groovy 代码中就可以无缝使用该

    [Groovy] Making Java Groovy 英文版

    Making Java Groovy is a practical handbook for developers who want to blend Groovy into their day to day work with Java It starts by introducing the key differences between Java and Groovy and how you...

    Groovy+Java混合使用例子

    Groovy环境搭建教程中的例子工程,纯Java、纯Groovy以及Java+Groovy混合 教程参考:http://blog.csdn.net/rcom10002/archive/2011/06/26/6568557.aspx

    Learning.Groovy.3.Java-Based.Dynamic.Scripting.2nd.Edition (英文版pdf)

    And, this book covers how Groovy supports Java type annotations and more. There is more to Groovy than the core language, so Learning Groovy 3, Second Edition covers the extended Groovy ecosystem. ...

    Java调用Groovy,实时动态加载数据库groovy脚本

    Java调用Groovy,实时动态加载数据库groovy脚本,java读取mongoDB的groovy脚本,加载实时运行,热部署

    精通 Groovy--下一代开发语言

    Groovy 是 JVM 的一个替代语言 — 替代 是指可以用 Groovy 在 Java 平台上进行 Java 编程,使用方式基本与使用 Java 代码的方式相同。在编写新应用程序时,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有...

    Groovy v2.4.13官方版

     Groovy是JVM的一个替代语言(替代是指可以用 Groovy 在Java平台上进行Java 编程),使用方式基本与使用 Java代码的方式相同,该语言特别适合与Spring的动态语言支持一起使用,设计时充分考虑了Java集成,这使 ...

    Java中使用Groovy的三种方式

    Java中使用Groovy的三种方式,详细见我的博客。

    Java Groovy结合使用

    概述主要介绍Java、spring与groovy结合使用,高清英文版本

    java 动态脚本语言 精通 Groovy

    java 动态脚本语言 精通 Groovy

    Groovy DSL

    Groovy 是基于Java的脚本语言。是Java语言扩展,因此可以与Java语言互相调用。在所有基于JVM虚拟机的语言中只有Scala可以媲美。使用Groovy可以快速灵活完成文本处理,数据库访问,XML处理等常见任务。研究表明,使用...

    hugo110-java_run_groovy-master_java_

    java运行groovy 环境,搭建方便自己练习groovy使用 与后续定时调度动态代码做准备

    Groovy API docs 2.4.15 (CHM格式)

    Groovy是JVM的一个替代语言(替代是指可以用 Groovy 在Java平台上进行 Java 编程),使用方式基本与使用 Java代码的方式相同,该语言特别适合与Spring的动态语言支持一起使用,设计时充分考虑了Java集成,这使 ...

    apache-groovy-sdk-2.4.11

    了解 Groovy 对 Java 语法的简化变形,学习 Groovy 的核心功能,例如本地集合、内置正则表达式和闭包。编写第一个 Groovy 类,然后学习如何使用 JUnit 轻松地进行测试。借助功能完善的 Groovy 开发环境和使用技能,...

    SpringBoot-Gradle-Maven-Java-Groovy

    SpringBoot-Gradle-Maven-Java-Groovy:SpringBoot通过不同构建工具和语言实现。

    Making Java Groovy源码

    Making Java Groovy Kenneth A. Kousen 1.Easier Java 2.Closures, builders, and metaprogramming 3.Gradle for builds, Spock for testing 4.Groovy frameworks like Grails and Griffon 源码

    Java Groovy

    Making Java Groovy

    groovy入门

    groovy初学者可以参考,Groovy 的一个好处是,它的语法与 Java 语言的语法很相似。虽然 Groovy 的语法源于 Smalltalk 和 Ruby 这类语言的理念,但是可以将它想像成 Java 语言的一种更加简单、表达能力更强的变体。...

    apache-groovy-sdk-3.0.9.zip

    了解 Groovy 对 Java 语法的简化变形,学习 Groovy 的核心功能,例如本地集合、内置正则表达式和闭包。编写第一个 Groovy 类,然后学习如何使用 JUnit 轻松地进行测试。借助功能完善的 Groovy 开发环境和使用技能,...

    java groovy整合

    1、eclipse安装groovy的插件。 2、创建java project。 3、把groovy-all-2.1.9.jar,加入...4、编写hello.groovy脚本文件,并在java代码中调用脚本文件 http://blog.csdn.net/bolg_hero/article/details/19077981

Global site tag (gtag.js) - Google Analytics