Java-Composition for Code Reuse

來源:互聯網
上載者:User

複用代碼(代碼重用機制)
java問題解決是圍繞著類展開的. 可以通過建立新類來複用代碼(利用現有類形成新類). 有兩種方法可以達到這一目的:
(1)在新類中產生現有類的對象. 由於新類是由現有類的對象所組成, 所以這種方法稱為組合. 該方法只是複用了現有程式碼的功能, 而非它的形式.
(2)按照現有類的形式來建立新類. 採用現有類的形式並在其中添加新代碼. 稱為繼承.

/** *//**
 * Title: Composition for code reuse<br>
 * Description: 組合文法, 只需將對象引用置於新類中即可<br>
 * Copyright: (c) 2008 Thinking in Java<br>
 * Company: (c) 2008 Augmentum.Inc<br>
 * @author Forest He
 * @version 1.0
 */
class WaterSource ...{
    private String s;
    WaterSource() ...{
        System.out.println("WaterSource()");
        s = new String("Constructed");
        /**//*建立了兩個對象, 一個是"Constructed", 一個是指向"Constructed"的引用對象s*/
    }
    public String toString() ...{return s;}
}
public class SprinklerSystem ...{
    private String value1, value2, value3, value4;
    private String
        s1 = new String("aaaaaaaaaaa"),
        s2 = new String("bbbbbbbbbbb"),
        s3, s4;
    /**//*學會上訴批量定義方法*/
    private WaterSource source = new WaterSource();
    private int i;
    private float f;
    public String toString() ...{
        if(s3 == null) s3 = new String("ccccccccccc");
        if(s4 == null) s4 = new String("ccccccccccc");
        return 
        "value1 = " + value1 + " " +
        "value2 = " + value2 + " " +
        "value3 = " + value3 + " " +
        "value4 = " + value4 + " " +
        "s1 = " + s1 + " " +
        "s2 = " + s2 + " " +
        "s3 = " + s3 + " " +
        "s4 = " + s4 + " " +
        "i = " + i + " " +
        "f = " + f + " " +
        "source = " + source;
        /**//*這個return語句真的很別緻, 學習*/
    }
    public static void main(String[] args) ...{
        SprinklerSystem sprinklers = new SprinklerSystem();
        System.out.println(sprinklers);
    }
}
/**//* toString(): 每一個非基本類型的對象都有一個toString()方法, 而且當編譯器需要一個String而你卻只有一個對象時, 給方法會被調用.
 * SprinklerSystem.toString()中"source = " + source;指的是: 由於只能將一個String對象和另一個String對象相加, 因此編譯器會告訴你: "我將調用toString(), 把source轉換成一個String!"(自動類型轉換). 每當你想要使所建立的類具備這樣的行為時, 編寫一個toString()方法覆蓋掉預設toString()方法即可.
 */

編譯器並不是簡單的為每一個引用都建立預設對象, 這一點是很有意義的. 否則記憶體負擔會很重. 可以在代碼的下列位置初始化這些引用:
(1)在定義對象的地方. 這意味著它們總是能夠在構造器被調用之前被初始化.
(2)在類的構造器中.
(3)在正要使用這些對象之前, 這種方式稱為"惰性初始化". 在產生對象不值得及不必每次都產生對象的情況下, 這種方式可以減少額外的負擔.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.