我需要支持具有嵌套组件的UI客户端。我想出了下面的对象模型 -
public class SomeUserInterface {
String name;
List<Component> components;
}
public class Component {
List <Component> components;
}
这里,SomeUserInterface将有多个组件,每个组件可能在其中包含嵌套组件。 建议的对象模型中是否存在任何问题?或者支持嵌套组件的最佳方法是什么?
注意:SomeUserInterface和Component不是相同的类。 SomeUserInterface可以包含Component,反之亦然。
答案 0 :(得分:1)
Component
和Container
都可以包含组件。如果它们提供相同的添加/删除等方法,它们应该从一个共同的祖先继承:
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;
// ...
}