引言
组合模式是一种用于处理分层数据结构的强大设计模式。它允许将具有不同功能的对象组合成树状结构,从而轻松地表示和操作复杂的数据层次结构。
模式结构
组合模式由两个关键类组成:
Component
接口的类,包含一组 Component
元素并提供对其管理的接口。实战案例:文件系统
让我们考虑一个文件系统的示例。它由文件夹和文件组成。文件夹可以包含文件夹和文件,而文件只能包含数据。
// Component 接口 interface FileComponent { void print(); } // Leaf:File class File implements FileComponent { private String name; public File(String name) { this.name = name; } @Override public void print() { System.out.println("File: " + name); } } // Composite:Folder class Folder implements FileComponent { private String name; private List<FileComponent> components; public Folder(String name) { this.name = name; components = new ArrayList<>(); } public void add(FileComponent component) { components.add(component); } @Override public void print() { System.out.println("Folder: " + name); for (FileComponent component : components) { component.print(); } } }
使用组合模式,我们可以创建和管理文件系统结构:
Folder rootFolder = new Folder("Root"); Folder subFolder1 = new Folder("SubFolder1"); File file1 = new File("File1.txt"); File file2 = new File("File2.txt"); rootFolder.add(subFolder1); rootFolder.add(file1); subFolder1.add(file2); rootFolder.print();
输出:
Folder: Root Folder: SubFolder1 File: File2.txt File: File1.txt
优点
组合模式提供以下优点:
缺点