11.1.2 使用组合(Composite)模式
银行一般有很多分行,这些分行分布在不同的地方,分行下面可能还有其他分支机构。为了显示银行的组织结构,我们使用组合模式,首先为抽象父类BranchComponent定义一个display()方法。它还包括getName()和getDiscription()两个方法分别用以得到银行的名称和描述。
UML静态类图如图11-2所示。
图11-2
BranchComponent类即为我们的Component类(这里未使用接口),供分支类BranchLeaf和叶子类BranchComposite继承。
BranchComponent类的代码如下所示。
分支类BranchComposite的代码片段大致如下所示。
BranchComposite类的display()方法除了显示自己的信息外,还要递归地显示所有子节点的信息,我们使用for-each循环[1]显示子节点信息。
它还包含管理子节点的方法:add(BranchComponent child)、remove(BranchComponent child)和getChild(int i)。
叶子类BranchLeaf的代码片段大致如下所示。
[1]Java 5及以上版本的新语法,参见附录A的推荐资源。