能够使容器与内容具有一致性,创造出递归结构。
示例
列出文件和文件夹的一览。
类图
Entry类
1 | public abstract class Entry { |
File类
1 | public class File extends Entry { |
Directory类
1 | import java.util.ArrayList; |
FileTreatmentException类
1 | public class FileTreatmentException extends RuntimeException { |
Main类
1 | public class Main { |
运行结果
1 | Making root entries... |
登场角色
Leaf(树叶)
表示“内容”的角色。在该角色中不能放入其他对象。在示例程序中,由File类扮演此角色。
Composite(复合物)
表示容器的角色。可以在其中放入Leaf角色和Composite角色。在示例程序中,由Directory类扮演此角色。
Component
使Leaf角色和Composite角色具有一致性的角色。Component角色是Leaf角色和Composite角色的父类。在示例程序中,由Entry类扮演此角色。
Client
使用Composite模式的角色。在示例程序中,由Main类扮演此角色。

