我想創建一個能夠容納兩種不同類(球體和矩形)的樹結構(二叉樹)。Java中的泛型/接口和樹結構
由於明顯的原因,我的球體和矩形將有不同的方法來獲得它們的大小(getSize()),我也打算有一個構造函數(對於這兩個類)它需要兩個對象(兩個球體或兩個矩形)他們創造一個更大的球體或矩形。
我應該如何處理編碼節點,以便它可以在需要時調用適當方法的節點上存儲球體或矩形?
如果我將對象轉換爲我需要的類型,一個簡單的接口會完成此操作嗎?
感謝,
DMCB
我想創建一個能夠容納兩種不同類(球體和矩形)的樹結構(二叉樹)。Java中的泛型/接口和樹結構
由於明顯的原因,我的球體和矩形將有不同的方法來獲得它們的大小(getSize()),我也打算有一個構造函數(對於這兩個類)它需要兩個對象(兩個球體或兩個矩形)他們創造一個更大的球體或矩形。
我應該如何處理編碼節點,以便它可以在需要時調用適當方法的節點上存儲球體或矩形?
如果我將對象轉換爲我需要的類型,一個簡單的接口會完成此操作嗎?
感謝,
DMCB
我會創建三個類。 包含矩形和球體的所有常見代碼的抽象類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可能很好用於此問題
請問一個簡單的界面做到這一點,如果我投的對象,我需要的類型?
接口Shape
似乎是合適的。如果操作正確,插入項目時根本不需要演員。
是的,一個接口,您可以在其中存儲常用方法並在每個類中實現它們。然後多態性將負責在運行時調用適當的方法。