组合是一种结构型设计模式, 你可以使用它将对象组合成树状结构, 并且能像使用独立对象一样使用它们。
对于绝大多数需要生成树状结构的问题来说, 组合都是非常受欢迎的解决方案。 组合最主要的功能是在整个树状结构上递归调用方法并对结果进行汇总。
复杂度:
流行度:
使用实例: 组合模式在 Java 代码中很常见,常用于表示与图形打交道的用户界面组件或代码的层次结构。
下面是一些来自 Java 标准程序库中的组合示例:
识别方法: 组合可以通过将同一抽象或接口类型的实例放入树状结构的行为方法来轻松识别。
简单和复合图形
本例展示了如何利用较为简单的形状来组成复杂图形, 以及如何统一处理简单和复杂图形。
shapes
shapes/Shape.java: 通用形状接口
shapes/BaseShape.java: 提供基本功能的抽象形状
shapes/Dot.java: 点
shapes/Circle.java: 圆形
shapes/Rectangle.java: 三角形
shapes/CompoundShape.java: 由其他形状对象组成的复合形状
editor
editor/ImageEditor.java: 形状编辑器
Demo.java: 客户端代码
OutputDemo.png: 执行结果