2011-11-16 31 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

是的,一个接口,您可以在其中存储常用方法并在每个类中实现它们。然后多态性将负责在运行时调用适当的方法。