📁Composite Pattern – File System Example
🧠 Concept
🧱 Key Roles
Role
Description
💻 Java Example – File System
// ----- Component -----
interface FileSystemComponent {
void showDetails(String indent);
}
// ----- Leaf -----
class FileItem implements FileSystemComponent {
private String name;
public FileItem(String name) {
this.name = name;
}
@Override
public void showDetails(String indent) {
System.out.println(indent + "📄 File: " + name);
}
}
// ----- Composite -----
class Folder implements FileSystemComponent {
private String name;
private List<FileSystemComponent> children = new ArrayList<>();
public Folder(String name) {
this.name = name;
}
public void add(FileSystemComponent component) {
children.add(component);
}
public void remove(FileSystemComponent component) {
children.remove(component);
}
@Override
public void showDetails(String indent) {
System.out.println(indent + "📁 Folder: " + name);
for (FileSystemComponent child : children) {
child.showDetails(indent + " ");
}
}
}
// ----- Client -----
public class Main {
public static void main(String[] args) {
// Create individual files
FileSystemComponent file1 = new FileItem("resume.pdf");
FileSystemComponent file2 = new FileItem("photo.jpg");
FileSystemComponent file3 = new FileItem("notes.txt");
// Create folders
Folder docsFolder = new Folder("Documents");
Folder picsFolder = new Folder("Pictures");
Folder rootFolder = new Folder("Home");
// Compose the structure
docsFolder.add(file1);
picsFolder.add(file2);
rootFolder.add(docsFolder);
rootFolder.add(picsFolder);
rootFolder.add(file3);
// Display full structure
rootFolder.showDetails("");
}
}🧠 Flow Summary
Step
Action
Result
🪜 Summary
🧾 Real-world Analogy
🧭 TL;DR
Last updated