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(); }}Exemple d’utilisation dans le monde réel
Section intitulée « Exemple d’utilisation dans le monde réel »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.