Построить гибридное дерево фруктов - PullRequest
0 голосов
/ 20 апреля 2011

Хорошо, у меня есть следующие интерфейсы и классы:

Код:

interface Tree extends Cloneable { int size(); }
class Fruit implements Tree {
@Override public int size() { 

return this.size();

}
}
class Branch implements Tree {
private List<Tree> children = new LinkedList<Tree>();
public List<Tree> getChildren() { return Collections.unmodifiableList(children); }
public void addChild(Tree tree) { children.add(tree); }
@Override public int size() { 

int size = 0;
for(Tree tree: children) size += tree.size();
return size;

}
}
class Mango extends Fruit { /* intentionally left empty */ }
class Peach extends Fruit { /* intentionally left empty */ }

И мне нужно создать код, который структурирует гибридное дерево этого типа:

  • ствол (основная ветвь) дерева

    • ветвь с двумя манго

    • другая ветвь с

      • (под) ветвь с двумя манго

      • один персик

Я получил первую часть:

Ствол ветки = new Branch ();

Но не уверен, как кодировать следующие части, кто-нибудь может мне помочьс этим?

1 Ответ

0 голосов
/ 20 апреля 2011

Вам нужно будет создать каждый из других объектов и добавить их в багажник. Используйте метод addChild(Tree tree), определенный в Branch.

Какой-то псевдокод:

make a branch for the trunk

make a branch
make two mangoes
add mangoes to branch
add the mango branch to the trunk

make a branch
make a peach
add peach to branch
make a sub-branch
make two mangoes
add mangoes to sub-branch
add sub-branch to branch
add branch to trunk

Это очень процедурно, но, вероятно, самый простой способ, учитывая ваш код. Я бы порекомендовал вам рассмотреть возможность внесения изменений в дизайн, если это возможно, но если это домашнее задание, вы можете застрять в нем.

Кажется, что конструкция этого более или менее соответствует составному шаблону , как я его прочитал.

...