Może posłużyć do opisania relacji jeden-do-wielu. Composit pozwala dodatkowo umieszczenie listy z obiektami w tym samym obiekcie. W poniższym przykładzie mamy interfejs Shape, który posiada klasy potomne Circle i Shape. CompositSape jest „kompozytem”, która przechowuje listę wielu instancji interfejsu Shape. Metoda Draw CompositeShape deleguje odpowiednie wywołanie do wszystkich obiektów składowych.
public interface Shape
{
void Draw();
}
public class Circle : Shape
{
public void Draw() {
}
}
public class Square : Shape
{
public void Draw()
{
}
}
public class CompositeShape : Shape
{
private List<Shape> itsShapes = new List<Shape>();
public void Add(Shape s)
{
itsShapes.Add(s);
}
public void Draw()
{
foreach (Shape shape in itsShapes)
shape.Draw();
}
}