軟件設計筆記(六)- 面向對象程序設計 - 4

1.3.7 對象銷燬

C++,程序員顯式銷燬對象,delete
java/C#,由虛擬機自動完成,garbage collection

析構方法通常用於清理非託管資源,文件系統、數據庫連接、網絡
建議,在開發中不要重寫C#和Java的析構方法,應該讓CLR/JVM負責
在C#中,非要顯式回收資源,可以利用Disposable模式來解決這個問題(不用C#,此處略)

2.1.1 對象組合(對象關係中的一種)

1-to-1

方式一:A對象完全包含B對象,A創建B隨之創建,A銷燬B隨之銷燬(組合)

// 方式一,使用簡單
class OneToOneClass{
    private InnerClass obj;
    public OneToOneClass(){
        obj = new InnerClass(); 
    }
}

方式二:A對象與B對象相互獨立,A對象引用現成的B對象,A的聲明週期與B無關(聚合)

// 方式二,採用對象注入
class OneToOneClass{
    private InnerClass obj;
    public OneToOneClass(InnerClass outerObj){
        this.obj = outerObj;
    }
}

1-to-N,實現起來把上述private InnerClass obj變成對象的集合

方式一:一輛車有4個輪子
方式二:一個飛機場有多架飛機

經驗:活用對象組合,延時動態創建用戶界面創建複雜的窗體(多個容器後臺加載)

自引用類(對象組合的特殊形式)

// 用處:在沒有指針的面向對象編程語言中,可以替代指針建立數據之間的關聯
class MyClass{
    MyClass obj;
}
// 比如,構成鏈表等數據結構
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章