객체를 트리구조로 구성해서 부분-전체 계층 구조를 구현

interface Graphic {
public void print();
}
class Ellipse implements Graphic {
public void print() {
System.out.println("Ellipse");
}
}
class CompositeGraphic implements Graphic {
private List<Graphic> childGraphics = new ArrayList<Graphic>();
public void print() {
for (Graphic graphic : childGraphics) {
graphic.print(); //Delegation
}
}
public void add(Graphic graphic) {
childGraphics.add(graphic);
}
public void remove(Graphic graphic) {
childGraphics.remove(graphic);
}
}
public class Program {
public static void main(String[] args) {
Ellipse ellipse1 = new Ellipse();
Ellipse ellipse2 = new Ellipse();
Ellipse ellipse3 = new Ellipse();
Ellipse ellipse4 = new Ellipse();
CompositeGraphic graphic1 = new CompositeGraphic();
CompositeGraphic graphic2 = new CompositeGraphic();
graphic1.add(ellipse1);
graphic1.add(ellipse2);
graphic1.add(ellipse3);
graphic2.add(ellipse4);
graphic1.add(graphic2);
graphic1.print();
}
}