728x90
데코레이터 패턴
@2024.04.17
Decorator Pattern
💡
객체 지향 디자인 패턴 중 하나로, 객체에 추가적인 기능을 동적으로 더 사용할 수 있도록 해준다.
- 주요 구성 요소
- Component
- 기능을 추가하고자 하는 객체의 인터페이스를 정의
- ConcreteComponet
- Component 인터페이스를 구현한 실제 객체
- 기본 기능이 구현
- Decorator
- Componet를 구현하는 데 사용되는 추상 클래스
- 구체적인 컴포넌트를 감싸는 역할
- ConcreteDecorator
- Decorator를 상속받아 구현된 클래스
- 실제로 추가적인 기능을 제공
- Component
- 특징
- 상속을 사용하지 않고 객체에 기능을 추가하므로, 객체 간의 결합도가 낮다.
- 기능을 추가하거나 수정하기 용이하며, 기존 코드의 변경 없이도 새로운 기능 추가 가능
- 여러 개의 Decorator 를 조합하여 복잡한 기능을 생성
- IO에서의 데코레이터 패턴
- InputStream, OutputStream 클래스와 이를 상속하는 서브 클래스
- 클래스의 기본 기능을 가진 객체를 감싸고 추가적인 기능을 제공하는 클래스를 만들어 내는 방식으로 동작
- BufferedInputStream, BufferewdOutputStream
- 기본적인 입력 및 출력 스트림을 감싸고, 버퍼링 기능을 추가
- DataInputStream, DataOutputStream
- 기본 스트림을 감싸고, 기본 타입 데이터를 읽고 쓰는 데 도움을 주는 기능을 추가
- InputStream, OutputStream 클래스와 이를 상속하는 서브 클래스
- 예시 코드
- Component : FileReader
- ConcreteComponet : SimpleFileReader
- Decorator : bufferedFileReader
- ConcreteDecorator : bufferedFileReader
// 파일로부터 데이터를 읽는 FileReader 객체 생성 FileReader fileReader = new SimpleFileReader("input.txt"); // 파일로부터 데이터를 읽는 FileReader 객체에 버퍼링 기능을 추가한 BufferedFileReader 객체 생성 FileReader bufferedFileReader = new BufferedFileReader(fileReader); // 버퍼링된 기능을 가진 FileReader 객체를 사용하여 데이터를 읽음 String content = bufferedFileReader.read(); System.out.println("File content:\n" + content);
728x90
'JAVA' 카테고리의 다른 글
멀티 스레드 (2) | 2024.04.27 |
---|---|
java.io 패키지 (0) | 2024.04.27 |
컬렉션 프레임워크 (1) | 2024.04.27 |
제네릭 (1) | 2024.04.26 |
java.lang과 java.util 패키지 (0) | 2024.04.26 |