好的,我有这些接口和类:
代码:
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 */ }
我需要创建构造这种混合树的代码:
树的主干(主分支)
一个有两个芒果的分支
的另一个分支
带有两个芒果的(子)分支
一个桃子
我得到了第一部分:
Branch trunk = new Branch();
但不确定如何对下一部分进行编码,任何人都可以帮我解决这个问题吗?
答案 0 :(得分:0)
您需要创建其他每个对象并将其添加到主干。使用Branch中定义的addChild(Tree tree)
方法。
一些伪代码:
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
这是非常程序化的,但鉴于您拥有的代码,这可能是最简单的方法。我建议您考虑在可能的情况下对设计进行更改,但如果这是一项家庭作业,您可能会遇到它。
正如我所读到的那样,这种构造似乎或多或少地符合composite pattern。