2011-11-16 56 views
3

我想創建一個能夠容納兩種不同類(球體和矩形)的樹結構(二叉樹)。Java中的泛型/接口和樹結構

由於明顯的原因,我的球體和矩形將有不同的方法來獲得它們的大小(getSize()),我也打算有一個構造函數(對於這兩個類)它需要兩個對象(兩個球體或兩個矩形)他們創造一個更大的球體或矩形。

我應該如何處理編碼節點,以便它可以在需要時調用適當方法的節點上存儲球體或矩形?

如果我將對象轉換爲我需要的類型,一個簡單的接口會完成此操作嗎?

感謝,

DMCB

回答

2

我會創建三個類。 包含矩形和球體的所有常見代碼的抽象類Shape。

public abstract class Shape{ 
    // contains all common code related to shapes 
    // such as child elements 
    Shape parentNode; // This will help navigate up 
    List<Shape> children; // This will help navigate down the tree 
    // Define, merge, split methods which are common to all shapes 
    // define shape specific methods 
} 
public class Rectangle : Shape{ 
    // Implement shape's abstract methods for this class 
} 

public class Sphere : Shape{ 
    // Implement shape's abstract methods for this class 
} 

所有形狀的具體方法應當留下抽象如getSize()drawShape()mergeShape()。 此外,也許不相關,但the Composite design pattern可能很好用於此問題

3

請問一個簡單的界面做到這一點,如果我投的對象,我需要的類型?

接口Shape似乎是合適的。如果操作正確,插入項目時根本不需要演員。

2

是的,一個接口,您可以在其中存儲常用方法並在每個類中實現它們。然後多態性將負責在運行時調用適當的方法。