Как получить доступ к конкретному листу с помощью Composite Pattern? - PullRequest
0 голосов
/ 10 марта 2011

Если я хотел получить доступ к семисотому и семьдесят седьмому листу узла Composite и получить доступ только к этому листу, возможно ли это с помощью Composite Pattern, или этот тип доступа находится за пределами домена шаблона?

1 Ответ

1 голос
/ 10 марта 2011

Я предполагаю, что вы говорите о Составной шаблон проектирования . Общая версия этого шаблона не позволяет вам сразу переходить к листьям, поэтому вам придется рекурсивно прогуливать детей. В псевдокоде:

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)
    }
  }
}

В этот момент вы можете получить доступ к 77-му элементу results, чтобы получить 77-й лист, как измеряется в порядке «дети, которых вы узнали о первом». Имейте в виду, что, в общем, просто сказать «77-й лист» не очень важно, если вы не дадите точный отчет о том, каков ваш критерий упорядочения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...