2011-02-08 113 views
1

我有一个问题,关于良好的应用程序设计,一直让我几天了。我们可以将其描述为:保持树视图和节点分离

  • 我有一个由节点组成的树结构,其中包含对子节点的引用。
  • 我现在想在TreeView中显示那个结构(我是那个会实现TreeView的人)。
  • 我不希望节点'知道'有一个TreeView,使我能够将这两个组件分开。

那么我在哪里存储节点是否扩展的信息(这些信息不是节点本身的一部分)。

任何想法如何以一种干净的方式实现这一点?

感谢,
Konne

回答

1

创建一个TreeViewModal类,该类绑定视图和实际模态。显然这被称为Model/View/ViewModel pattern。用于TreeView的Here is an example。这两个链接都使用C#编写代码,但可以轻松移植到任何语言。

0

如果每个节点都有一个唯一的哈希的关键,你可以添加一个哈希表来TreeView包含的扩展节点的密钥。

+0

嗯,我想到了,但它看起来效率极低。另一个问题是我要求用户了解我的树的实现细节(他们需要实现hash_function或<) – 2011-02-08 02:38:28

+0

您可以构建一个由“TreeView”管理的并行树,其中每个节点指向相应的“节点“,但是这更加开销。如果你想保持结构分离,你需要有一种方法让一个结构引用另一个结构中的节点。 – 2011-02-08 02:45:59