快速业务通道

实战 Groovy: 用 Groovy 减少代码冗余 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
实现进行编码,我向一个接口编程,该接口使这个类跟 RentABike 实现的改变分 隔开来。这是很好的、扎实的 Java 编程实践。

实战 Groovy: 用 Groovy 减少代码冗余(5)

时间:2011-08-27 IBM Sailing

清单 7. Java 版的自行车商店视图

public class CommandLineView {   private RentABike rentaBike;   public CommandLineView() {}   public void setRentaBike(RentABike rentaBike) {      this.rentaBike = rentaBike;   }   public RentABike getRentaBike() { return this.rentaBike; }   public void printAllBikes() {      System.out.println(rentaBike.toString());      Iterator iter = rentaBike.getBikes().iterator();      while(iter.hasNext()) {         Bike bike = (Bike)iter.next();         System.out.println(bike.toString());      }   }}

将清单 7 中的 Java 视图与清单 8 中的 Groovy 视图进行比较,请注意我声 明了带 def 关键字的 rentaBike。这是 duck-typing 的实践,与 Java 版的很 像。我正在实践好的软件设计,这是因为我还没有将视图和特定的实现耦合起来 。但我也能够不 定义接口就实现解耦。

清单 8. Groovy 的 CommandLineView

public class CommandLineView {  def rentaBike  // no interface or concrete type required, duck typing in action  def printAllBikes() {    println rentaBike    rentaBike.bikes.each{ println it}  // no iterators or casting  }}

与 Bike 和自行车商店类型一样,Groovy 的 CommandLineView 没有了为 RentABike 属性所显式编写 的 getter 或 setter 的冗余。同样,在 printAllBikes() 方法中,通过使用 each 来打印在集合里找到的每辆自行车, 我再一次利用了 Groovy 强大的集合功能的改进。

使用 Spring 进行组装

在前面的部分中,已经介绍了 Groovy 相比 Java 是如何定义自行车、自行车 商店和自行车商店视图的。现在该介绍如何将整个应用程序组装起来并在命令行 视图中使用 Spring 来显示库存自行车列表了。

实战 Groovy: 用 Groovy 减少代码冗余(6)

时间:2011-08-27 IBM Sailing

工厂的工厂

在 Java 编程中,一旦定义了一个接口,就可以使用工厂模式将创建真实的实 现类的责任委派给一个对象工厂。使用 Spring 作为一个工厂极大地减少了冗余 ,并在 Groovy 和 Java 中都能够使用,在最终的代码样例中,Spring 负责在 Java 和 Groovy 中创建一个 CommandLineView 类型的实例。

在清单 9 中,配置 Spring 是为了在返回一个 CommandLineView 实例前,创 建并将自行车商店的 ArrayList 实现注入 CommandLineView 中。这意味着,不 需要引用在 清单 7 和 8 的 Java 或是 Groovy 版的命令行视图中的 ArrayList 实现。在 Java 版中,被注入的类通常都会引用一个接口而不是实现。在 Groovy 中,由于使用 def 关键字,而允许利用 duck-typing。无论在哪个实例中,配置 Spring 的目的都是为了将自行车商店视图的实例和自行车商店类型的实例完整地 配置起来!

清单 9. Spring 配置文件

<beans>    <bean id="rentaBike" class="ArrayListRentABike">        <property name="storeName"><value>"Bruce''s Bikes (spring bean)"</value></property>    </bean>    <bean id="commandLineView" class="CommandLineView">        <property name="rentaBike"><ref bean="rentaBike"/></property>    </bean></beans>

在清单 10 和 11 中,自行车商店组装类

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号