Aller au contenu

Composite

Contexte : Composer des objets en structures arborescentes pour représenter des hiérarchies partie‑tout. Composite permet aux clients de traiter uniformément des objets individuels et des compositions.

public abstract class Component
{
public abstract void Operation();
}
public class Leaf : Component
{
public override void Operation() => Console.WriteLine("Leaf");
}
public class Composite : Component
{
private List<Component> _children = new();
public void Add(Component c) => _children.Add(c);
public override void Operation()
{
foreach (var child in _children)
child.Operation();
}
}

Système de fichiers : Les fichiers (feuille) et les répertoires (composite) implémentent tous deux IFileSystemNode. Les opérations comme GetSize() ou Delete() fonctionnent sur les deux.

Exemple : Dans les frameworks UI, Control peut être un bouton unique ou un panneau contenant d’autres contrôles. ICompositeMetadataDetailsProvider d’ASP.NET Core utilise le pattern Composite.