实战 Groovy: 用 Groovy 减少代码冗余 - 编程入门网
== "Shimano" assert b.getModel() == "Roadmaster" // Groovier way to invoke accessors assert b.model == "Roadmaster" assert b.manufacturer == "Shimano" }}
实战 Groovy: 用 Groovy 减少代码冗余(3)时间:2011-08-27 IBM Sailing也注意到在上述 Groovy 例子中,不必定义一个如 清单 1 中定义的 Java 构 造函数那样的能够接受 全部六个属性的构造函数。同时,也不必要创建另一个 只含两个参数的构造函数 来支持测试用例 —— 在对象创建过程中设置对象属性的 Groovy 的语义不需要这种冗余、烦人的构造 函数(它们综合有多个 参数但其作用却只是初始化变量)。 降低的复杂性 在前面的部分中,Bike GroovyBean 利用了 Groovy 的属性和构造语义以减少 源代码中的冗余。在这 一部分中,Groovy 版的自行车商店也将受益于额外的冗余减少特性,如针对多态 的 duck-typing、集合 类的改进及操作符重载。 Grooving 中使用多态 在 Java 自行车应用程序中,名为 RentABike 的接口是用来定义由自行车商 店支持的 public 方法 的。正如在清单 4 中说明的那样,RentABike 定义了一些简单的方法,这些方法 用来返回商店中单个的 Bike 或所有 Bike 的列表。 清单 4. 由 Java 定义的 RentABike 接口 import java.util.List;public interface RentABike { List getBikes(); Bike getBike(String serialNo); void setStoreName(String name); String getStoreName();} 此接口允许多态行为并在下面两种重要情况下提供了灵活性。其一,如果要决 定将实现由 ArrayList 转变为数据库形式,余下的应用程序与该变化是隔绝的。其二,使用接口为单元 测试提供灵活性。例如 ,如果要决定为应用程序使用数据库,可以轻易地创建一个该类型的模拟实现, 而且它不依赖于实时数 据库。 清单 5 是 RentABike 接口的 Java 实现,它使用 ArrayList 来存储多个 Bike 类: 清单 5. RentABike 接口的 Java 实现 import java.util.List;import java.util.ArrayList;import java.util.Iterator;public class ArrayListRentABike implements RentABike { private String storeName; final List bikes = new ArrayList(); public void setStoreName(String name) { this.storeName = name; } public String getStoreName() { return storeName; } public ArrayListRentABike(String storeName) { this.storeName = storeName; bikes.add(new Bike("Shimano", "Roadmaster", 20, "11111", 15, "Fair")); bikes.add(new Bike("Cannondale", "F2000 XTR", 18, "22222",12, "Excellent")); bikes.add(new Bike("Trek","6000", 19, "33333", 12.4,"Fair")); } public String toString() { return "com.springbook.RentABike: " + storeName; } public List getBikes() { return bikes; } public Bike getBike(String serialNo) { Iterator iter = bikes.iterator(); while(iter.hasNext()) { Bike bike = (Bike)iter.next(); if(serialNo.equals(bike.getSerialNo())) return bike; } return null; }} 实战 Groovy: 用 Groovy 减少代码冗余(4)时间:2011-08-27 IBM Sailing现在将 清单 4 和 5 中的 Java 代码同 清单 6 中的 Groovy 代码进行比较 。Groovy 版的代码很灵 巧地避免了对 RentABike 接口的需求。 清单 6. Groov |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |