DesignPatterns에서 StructuralPatterns의 하나.

특정 객체를 감싸주는 decorator class를 만든다. 마치 해당 객체를 꾸며주는것과 같아서, decorator이고, 보통 decorator class의 생성자인수로 주인공 객체를 넣어준다. 

내용물을 변경하지 않고 기능을 추가 할수 있다. 일종의 [[Recursion]]개념이 사용된다.

== Structure ==


== Example in our project ==

특정인에게 보내는 편지 : [[DecoratorLetter.py]]
디스플레이시 장식하기 : [[DecoratorDisplay.java]]
FastaFormat 꾸미기 : [[FastaDecorator.py]]

java.io패키지에 DecoratorPattern이 사용되었다. 파일로부터 데이터를 읽을때
{{{
Reader reader = new FileReader("data.txt");

Reader reader = new BufferedReader(
                    new FileReader("data.txt")
                );            // 버퍼링가능

Reader reader = new LineNumberReader(
                    new BufferedReader(
                        new FileReader("data.txt")
                    )
                );  // 버퍼링가능 + 줄번호관리가능

Reader reader = new LineNumberReader(
                    new BufferedReader(
                        new InputStreamReader(
                            socket.getInputStream()
                        )
                    )
                );  // 소켓으로부터
}}}


== 관련정보들 ==

Wiki:DecoratorPattern
----
CategoryPattern