如果我想访问Composite节点的第七七七叶,并且只访问该叶子,那么复合模式是可能的,还是该模式域外的那种访问?
答案 0 :(得分:1)
我假设你在谈论Composite design pattern。该模式的一般版本不允许您直接跳到叶子,因此您必须递归地遍历子项。在伪代码中:
stack = []
stack.push(rootElement)
results = []
while(stack is not empty) {
elt = stack.pop()
if (elt.is_leaf()) {
results.push(elt)
}
else { // not a leaf: add children to the stack
for (c in elt.children()) {
stack.push(c)
}
}
}
此时,您可以访问results
的第77个元素以获得第77个叶子,在“您发现的第一个”命令中进行测量。请记住,一般来说,除非您准确说明您的订购标准是什么,否则只说“第77片叶子”并不是很有意义。