【问题标题】:Iterate on a tree data structure and send information to an external class by considering the hierarchies of the tree通过考虑树的层次结构,迭代树数据结构并将信息发送到外部类
【发布时间】:2011-06-09 13:48:07
【问题描述】:

我有一个名为“Tree”的类,它实现了具有非同质节点的树数据结构(我有三种节点)。根据面向对象编程的原则,“树”类必须了解处理和管理树的细节以及一些操作,如添加、搜索等。

在我的 GUI 中,我想将该“树”类的实例的层次结构添加到 treeView 组件中。再次根据面向对象编程的原则,treeView没有树的内部结构信息,树的内部结构被封装,'Tree'类代表树的抽象接口。

所以'Tree'类也可以添加节点treeView组件,但我不喜欢'Tree'类有关于表示层的知识并且知道如何将节点添加到像treeView这样的特殊组件。

问题是我正在寻找一种方法,例如使用接口或委托或类似的东西,“树”类在树上迭代并发送外部类的信息,但要考虑树的层次结构结构。

【问题讨论】:

标签: c# oop data-structures treeview tree


【解决方案1】:

我将使用 Composite 组合来表示您的树结构和访问该树的访问者来构建 UI TreeView。 以下是几个很好的现实世界示例,可帮助您入门:

http://codebetter.com/jeremymiller/2007/10/31/be-not-afraid-of-the-visitor-the-big-bad-composite-or-their-little-friend-double-dispatch/

http://codeblitz.wordpress.com/2009/07/29/perfect-match-composite-and-visitor-pattern/

访问者模式的目的是封装您要对数据结构的元素执行的操作。这样,您可以更改对结构执行的操作,而无需更改您正在操作的元素的类。使用访问者模式可以解耦数据结构的类和它们所使用的算法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-18
    • 1970-01-01
    • 2014-10-26
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 2010-10-16
    相关资源
    最近更新 更多