对树数据结构进行迭代,并通过考虑树的层次结构将信息发送到外部类

本文关键字:信息 层次结构 外部 数据结构 迭代 | 更新日期: 2023-09-27 17:58:51

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

在我的GUI中,我想将"Tree"类实例的层次结构添加到treeView组件中。同样,根据面向对象编程的原则,treeView没有关于树的内部结构的信息,并且树的内部构造被封装,"tree"类表示树的抽象接口。

因此"Tree"类也可以添加节点treeView组件,但我不希望"Tree"类具有表示层的知识,并且知道如何将节点添加到像treeView这样的特殊组件中。

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

对树数据结构进行迭代,并通过考虑树的层次结构将信息发送到外部类

我将使用Composite来表示树结构,并使用Visitor来访问该树以构建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/

访问者模式的目的是封装要对数据结构的元素执行的操作。通过这种方式,您可以更改对结构执行的操作,而无需更改正在操作的元素的类。使用Visitor模式可以将数据结构的类和在其上使用的算法解耦