728x90
데코레이터 패턴 정의
- 기능을 동적으로 유연하게 확장할 수 있게 해주는 패턴
- 추가 기능을 Decorator 클래스로 정의한 후 조합함으로써 추가기능 조합을 설계하는 패턴
- 용도에 따라 객체의 기능을 계속 추가(데코레이트) 할 수 있게 해줌
데코레이터 패턴 특징
- 객체에 동적으로 기능을 추가할 수 있게 해줌
- 기능이 많아질수록 데코레이터 클래스들이 계속 추가 되어야 하기 때문에 클래스가 많아져서 복잡성이 높아짐
- 겹겹으로 애워싸기 때문에 객체의 정체를 알기가 힘듬
데코레이터 패턴 용도
- 요소들을 계속 수정하면서 사용하는 구조 인 경우
- 오소들을 조합해서 사용하는 경우
데코레이터 예시
public interface Box {
void wrap();
}
public class GiftBox implements Box {
@Override
public void wrap() {
System.out.println("선물박스 포장");
}
}
public class GiftBoxDecorator implements Box {
private Box box;
public GiftBoxDecorator(Box box) {
this.box = box;
}
@Override
public void wrap() {
box.wrap();
}
}
public class FoodBoxDecorator extends GiftBoxDecorator {
public FoodBoxDecorator(Box box) {
super(box);
}
@Override
public void wrap() {
super.wrap();
System.out.print("푸드박스 포장");
}
}
public class Main {
public static void main(String[] args) {
Box box = new GiftBox();
FoodBoxDecorator foodBoxDecorator = new FoodBoxDecorator(box);
foodBoxDecorator.wrap();
}
}
- 필드에 Box를 생성자를 통하여 값을 넘겨받으면서 데코레이터를 이어 붙여서 정의함
'JAVA' 카테고리의 다른 글
[JAVA] 제네릭 (0) | 2021.12.15 |
---|---|
[JAVA] 리플렉션 (0) | 2021.12.12 |
[JAVA] 프록시패턴 (0) | 2021.12.09 |
[JAVA] ThreadLocal (0) | 2021.12.03 |
[JAVA] 템플릿 메소드 패턴 (0) | 2021.11.29 |