国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

實戰 Groovy: 用 Groovy 減少代碼冗余

2019-11-18 15:05:31
字體:
來源:轉載
供稿:網友

2006 年 10 月 17 日

    Groovy 簡潔的語法將開發人員從那種需要進行代碼編譯但卻無助于表達 什么 是程序真正想要實現的典型的 java 結構中解放了出來。在實戰 Groovy 系列的這一復興篇中,Groovy 開發人員兼特約專欄作家 J. Scott Hickey 帶您進行一系列對常規 Java 代碼和 Groovy 代碼的比較,展示這門令人興奮的語言如何將您解放出來,讓您能夠專注于編碼的重要方面。

    通常,程序員們轉而選擇諸如 Groovy 之類的編程語言,是為了構建快速的實用程序,快速編寫測試代碼,甚至創建構成大型的 Java 應用程序的組件,而 Groovy 先天具有這樣一種能力,它能夠減少傳統的基于 Java 系統所固有的許多冗余并降低其復雜度。Groovy 簡潔而靈活的語法將開發人員從那種需要進行代碼編譯卻無助于表達什么 是程序真正想要實現的典型的 Java 結構中解放出來。不僅如此,Groovy 輕松的類型通過減少一些接口和超類使代碼不再復雜,這些接口和超類都是常規 Java 應用程序用以支持不同具體類型間的通用行為所需的。

    為了舉例說明 Groovy 如何減少 Java 應用程序所涉及的無用數據,我將使用 BrUCe Tate 和 Justin Ghetland 的 SPRing: A Developer's Notebook中的樣例代碼,該書介紹了如何使用 Spring 進行控制反轉。每當回顧一個 Java 樣例,我都會將其與實現相同功能的相應的 Groovy 源代碼進行比較,您將很快發現 Groovy 通過減少 Java 編程的不同方面(冗余且不必要地傳遞了應用程序的行為)而使應用程序代碼變得多么地清楚。

Groovy 之聲

    在 Bruce 和 Justin 這本書的第一章中,創建了一個簡單的自行車商店應用程序,其中包含有四個類。首先,我將向您展示一個簡單的名為 Bike 的 JavaBean 類,該類代表了一輛庫存的自行車。然后,我會考查自行車商店的類型,名為 RentABike。它包含了一個 Bike 集。還有一個命名為 CommandLineView 的用于顯示自行車列表的類,該類依靠于 RentABike 類型。最后,有一個用于集成這些部分以創建工作應用程序的類,該類利用 Spring 來傳遞完整地配置了 RentABike 類型的 CommandLineView 類 —— 免去了復雜的硬編碼。

停用 JavaBean!

    清單 1 中一個代表自行車的類在常規 Java 代碼中被實現為一個簡單的 JavaBean,它是 Java 開發人員可能已經編寫好的成百上千的類的一個典型。通常來說,JavaBean 并沒有什么非凡之處 —— 其屬性被聲明為 private,且可通過 public getter 和 setter 對其進行訪問。


清單 1. Java 代碼中的 Bike JavaBean
    import java.math.BigDecimal;public class Bike {   private String manufacturer;   private String model;   private int frame;   private String serialNo;   private double weight;   private String status;   private BigDecimal cost;   public Bike(String manufacturer, String model, int frame,      String serialNo, double weight, String status) {      this.manufacturer = manufacturer;      this.model = model;      this.frame = frame;      this.serialNo = serialNo;      this.weight = weight;      this.status = status;   }   public String toString() {      return "com.springbook.Bike : " +            "manufacturer -- " + manufacturer +            "/n: model -- " + model +            "/n: frame -- " + frame +            "/n: serialNo -- " + serialNo +            "/n: weight -- " + weight +            "/n: status -- " + status +            "./n"; }   public String getManufacturer() { return manufacturer; }   public void setManufacturer(String manufacturer) {      this.manufacturer = manufacturer;   }   public String getModel() { return model; }   public void setModel(String model) { this.model = model; }   public int getFrame() { return frame; }   public void setFrame(int frame) { this.frame = frame; }   public String getSerialNo() { return serialNo; }   public void setSerialNo(String serialNo) { this.serialNo = serialNo; }   public double getWeight() { return weight; }   public void setWeight(double weight) { this.weight = weight; }   public String getStatus() { return status; }   public void setStatus(String status) { this.status = status; }   public BigDecimal getCost() { return cost; }   public void setCost(BigDecimal cost) {     this.cost = cost.setScale(3,BigDecimal.ROUND_HALF_UP);   }}                                      



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黄石市| 景谷| 礼泉县| 台南市| 怀集县| 邢台县| 崇左市| 始兴县| 日土县| 堆龙德庆县| 抚顺市| 五峰| 明水县| 屏边| 吉林市| 桐梓县| 定陶县| 太白县| 高邑县| 南宁市| 安平县| 怀远县| 襄汾县| 平江县| 盐山县| 山丹县| 横峰县| 河间市| 昭通市| 柳州市| 祥云县| 丘北县| 哈尔滨市| 青神县| 达日县| 宁明县| 垫江县| 井研县| 荆州市| 阿克陶县| 敖汉旗|