我有一个对象的层次结构(比如说,3 个级别)。
A类与B类组成,B类与C类组成。
初始化执行如下操作:
$a1 = new A()
$a1->add('B1', $b11 = new B())
$a1->add('B2', $b12 = new B())
$b11->add('C1', $c111 = new C())
$b12->add('C1', $c121 = new C())
...
我的问题发生在$c121
想要检索$c111
. 我目前知道实现这一目标的两种方法:
1/ 假设 A 是一个单例:它使我能够从树的任何节点冲回根。然后我可以使用完整的“路径名”从根目录寻址任何节点。
2/ 给每个对象它的祖先,所以它们可以通过树来回(通过祖先引用)和来回(通过路径名)。
虽然两者都满足我的需求,但我找不到任何令人满意的解决方案。
我错过了什么吗?这应该是一个常见问题,但我无法弄清楚哪种设计模式可以匹配这个问题。
编辑请注意,层次结构不是由相似的项目组成的。所以它是一个固定的层次结构。只有每个级别的项目数量是波动的。(例如,客户、订单和订购的产品)