我的问题是关于如何最好地创建可变深度层次结构。 假设我希望能够将产品放入类别层次结构中,但是不同产品的层次结构深度不同。
例如,法拉利可能属于“车辆”->“汽车”->“运动”类别 而 LED 3D 电视可能位于电子 -> 电视 -> LED -> 3D。
希望你能明白这个想法:-) 对此进行建模的最佳方法是什么?我是否应该创建一个可以保存自身列表的类别对象,也许有一个 boolean 属性告诉当前对象是否是叶节点?还有其他建议吗?`
或者我应该非常努力地为我的层次结构设置固定的深度吗?
最佳答案
表示类别的模型可以是一棵树(具有不可见的根节点、“开始”或其他节点)。每个类别都有一个父类别和一个或多个子类别。
然后,对于该产品,向该产品添加类别列表。这是非常灵活的,因为有一天您可能会考虑在不同的类别中列出单个产品。
<小时/>类别类的非常基本模型:
public class Category {
private List<Category> children = new ArrayList<Category>();
private Category parent;
private String name;
// private constructor
private Category(Category parent, String name) {
this.parent = parent;
this.name = name;
}
// adds a category to this category
public Category addCategory(String name) {
Category child = new Category(this, name);
children.add(child);
return child;
}
// creates and returns a new categories tree
public static Category createCategories() {
return new Category(null, "root");
}
}
关于java - 创建可变深度类别的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4883148/