在java中支持嵌套对象模型的最佳方法是什么?

时间:2015-10-07 06:32:54

标签: java nested object-model

我需要支持具有嵌套组件的UI客户端。我想出了下面的对象模型 -

public class SomeUserInterface { 
        String name;
        List<Component> components;  
}
public class Component {
        List <Component> components;  
}

这里,SomeUserInterface将有多个组件,每个组件可能在其中包含嵌套组件。 建议的对象模型中是否存在任何问题?或者支持嵌套组件的最佳方法是什么?

注意:SomeUserInterface和Component不是相同的类。 SomeUserInterface可以包含Component,反之亦然。

1 个答案:

答案 0 :(得分:1)

ComponentContainer都可以包含组件。如果它们提供相同的添加/删除等方法,它们应该从一个共同的祖先继承:

public class ComponentHolder {
    List<Component> components;
}

public class Component extends ComponentHolder {
    // ...
}

public class Container extends ComponentHolder {
    String containerName;
    // ...
}

编辑:另一种可能性是使用构图。这样你的类就不需要共同的祖先,但仍然会使用相同的组件列表实现。如果您决定更改组件的存储方式,则只能在一个地方进行。

public class ComponentHolder {
    List<Component> components;
    // add, remove, get, ...
}

public class Component {
    ComponentHolder content;
    void add(Component c) {
        content.add(c);
    }
    // ...
}

public class Container {
    String containerName;
    ComponentHolder content;
    // ...
}