我有了这些接口和类:
代码: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();
但不确定如何编码下一部分,有人能帮助我吗?
您需要创建每个其他对象并将它们添加到主干中。使用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
这是非常程序化的,但可能是给定代码的最直接的方法。如果可能的话,我建议你考虑改变设计,但如果这是一个家庭作业,你可能会被它困住。
这个结构似乎或多或少符合复合模式,正如我所读的。