我正在寻找更多关于处理类实例的树的信息,以及如何最好地从树干上的树叶上调用方法。我有一个包含许多分支实例的主干实例(在字典中),并且每个实例都有许多叶子实例(以及分支中的字典)。叶子是行动真正发生的地方,因此叶子中有方法来查询价值,恢复价值和许多其他事情。在Python中使用类实例的树
这导致了代码重复的感觉,因为我可能想对某个分支的所有叶做些什么,所以在分支中有一些方法用于对叶,指定叶集或全部叶子知道这个分支,尽管这些通过简单地循环叶子并要求他们自己做这些事情(因此实际工作的代码在叶子类中的一个地方)来减少代码重复。
然后树干进来,在那里我可能想要对整个树(即所有树叶)做一些事情,所以我有方法让所有已知对象运行它们的全叶函数。我开始觉得从这种方式的叶子中真正的动作中移除了,虽然它工作的很好,而且代码看起来相当紧密 - 非常简短,可读性和运行良好。
另一个问题出现在逻辑分组中。有些数据可能要与某些,大部分或全部叶子相关联,以表明它们是某个逻辑组的一部分,所以目前叶子本身都存储了这种数据。当我想要得到一个逻辑组时,我必须扫描所有的树叶并将它们收集起来,而不是在树干层面有某种列表。这实际上一切正常,甚至是非常合乎逻辑的,但它感觉疯了。这仅仅是因为它们的复杂性,还是有其他方法来处理这些类型的事物,而与树状结构一起工作的本质?我不想建立二级结构来从相反方向连接到事物 - 例如用一个逻辑组中的树叶作为参照,然后从那个更像列表的方向接近它们。将所有东西都保存在一棵大树中的一个好处就是它可以用腌菜一次性倾倒和装载。
我很乐意听到别人对这些事情的经验 - 任何和所有 - 的想法。
谢谢,马克。你对我的模糊问题基本上是正确的。你也不是第一个向我推荐设计模式的人。我想我终于准备好了提示。我目前正在寻找一份Design Patterns书。 –