java - 创建可变深度类别的最佳方法?

标签 java design-patterns

我的问题是关于如何最好地创建可变深度层次结构。 假设我希望能够将产品放入类别层次结构中,但是不同产品的层次结构深度不同。

例如,法拉利可能属于“车辆”->“汽车”->“运动”类别 而 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/

相关文章:

java - 如何以编程方式从源代码创建可运行的 jar 文件?

JavaFX - 图像、imageview 和

java - 使用 DBUnit 集成测试 Spring 存储库层

java - 对象的创建——工厂方法

java - 如何构建我自己的应用程序设置

c++ - 处理模板创建的更好方法?

java - Android中是否有可用的视频编辑库

java - 增加一个整数的 int 值?

design-patterns - 如果已知具体类,为什么要使用 IoC/DI?

c# - I扩展 : extensible object pattern : How does it work?