Составной шаблон можно использовать, когда набор объектов должен обрабатываться так же, как один объект одного типа.Это часто используется с древовидными данными.Ниже приведен пример, где этот шаблон хорошо подходит:
public abstract class Shape {
public abstract void Draw();
}
public class Line : Shape {
public override void Draw() {
// Draw line
}
}
public class Polygon : Shape {
private IList<Line> lines;
public override void Draw() {
foreach (Shape line in lines) {
line.Draw();
}
}
}
Как вы можете видеть, шаблон позволяет коду, работающему с рисованием фигур, не знать, сколько линий нарисовано.