组合(composite)模式

来源:互联网 发布:阿里妈妈淘宝联盟下载 编辑:程序博客网 时间:2024/06/03 08:22

组合模式主要应用在“树形结构”的情况下,如 GUI各控件、目录树等。

在有些设计模式的书里把组合模式定义为两种,即安全的组合模式和透明的组合模式。个人感觉只有“透明的组合模式”才是真正的模式,安全的组合模式不能称为模式。


对于“安全的组合模式”这里不做讨论,它只是一种普通的面向对象应用而已,没有什么特别之处。


上图所示为一个组合模式的框图,在这里最需要注意的一点就是  Leaf和Composite具有相同的接口(或抽像类)Component,无论是 Leaf 还是 Composite,对于其它类看来它只是一个 Component,既然它是一个 Component它就应该具有 Component 的方法。

一个组合模式的最顶层接点应该是具有孩子的结点,那么当最顶层的接点调用 operation 方法时,它会依次调用自己孩子的 operation, 而顶层接点的孩子如果还有孩子,它又会调用孩子的operation, 就这样递归下去,一直到叶子接点,叶子接点没有孩子,存储孩子的 ArrayList 为空,所以递归终止。


原创粉丝点击