여러 객체들을 하나로 관리하기 위한 패턴.
예를 들자면 전화번호부 목록.
전체 조회를 해보려면 하나로 관리하는게 편하다.
거기에는 분류에 따라서 대학교 친구, 고등학교 친구가 있을 텐데,
그건 Friend 클래스나 인터페이스를 상속받아 하면 된다.
그 다음 복합체 클래스의 멤버 컬렉션(리스트 등)에 추가 해 준뒤, 그거를 for로 읽어주면 된다.
다음 코드는 도형 전체를 관리하는 코드이다.
public interface Shape {
public void draw(String fillColor);
}
public class Circle implements Shape {
@Override
public void draw(String fillcolor) {
System.out.println("Drawing Circle with color " + fillcolor);
}
}
public class Triangle implements Shape {
@Override
public void draw(String fillcolor) {
System.out.println("Drawing Triangle with color " + fillcolor);
}
}
public class Drawing implements Shape {
private List<Shape> shapes = new ArrayList<Shape>();
@Override
public void draw(String fillcolor) {
for(Shape shape : shapes) {
shape.draw(fillcolor);
}
}
public void add(Shape s) {
this.shapes.add(s);
}
public void remove(Shape s) {
shapes.remove(s);
}
public void clear() {
System.out.println("Clearing all the shapes from drawing");
this.shapes.clear();
}
}
이런 식으로 복합체 클래스가 모든 도형 객체의 draw를 할 수 있다.