컴포지트 패턴(Composite pattern)이란 객체들의 관계를 트리 구조로 구성하여 부분-전체 계층을 표현하는 패턴으로, 사용자가 단일 객체와 복합 객체 모두 동일하게 다루도록 한다.
구조
예
자바
importjava.util.List;importjava.util.ArrayList;/** "Component" */interfaceGraphic{//Prints the graphic.publicvoidprint();}/** "Composite" */classCompositeGraphicimplementsGraphic{//Collection of child graphics.privateList<Graphic>mChildGraphics=newArrayList<Graphic>();//Prints the graphic.publicvoidprint(){for(Graphicgraphic:mChildGraphics){graphic.print();}}//Adds the graphic to the composition.publicvoidadd(Graphicgraphic){mChildGraphics.add(graphic);}//Removes the graphic from the composition.publicvoidremove(Graphicgraphic){mChildGraphics.remove(graphic);}}/** "Leaf" */classEllipseimplementsGraphic{//Prints the graphic.publicvoidprint(){System.out.println("Ellipse");}}/** Client */publicclassProgram{publicstaticvoidmain(String[]args){//Initialize four ellipsesEllipseellipse1=newEllipse();Ellipseellipse2=newEllipse();Ellipseellipse3=newEllipse();Ellipseellipse4=newEllipse();//Initialize three composite graphicsCompositeGraphicgraphic=newCompositeGraphic();CompositeGraphicgraphic1=newCompositeGraphic();CompositeGraphicgraphic2=newCompositeGraphic();//Composes the graphicsgraphic1.add(ellipse1);graphic1.add(ellipse2);graphic1.add(ellipse3);graphic2.add(ellipse4);graphic.add(graphic1);graphic.add(graphic2);//Prints the complete graphic (four times the string "Ellipse").graphic.print();}}