Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 냄새와 휴리스틱
- 프로그래머스
- 가장 긴 증가하는 부분 수열2
- programmers
- 자바의 정석
- 17장
- 9장
- DxTrace
- 백준
- 10830번
- 코딩테스트
- 11286번
- Design Patterns
- Spring
- 2166번
- SerialDate 리펙터링
- 클린코드
- Design Pattern
- Adapater Pattern
- 11758번
- 2206번
- java의 정석
- 1043번
- 1300번
- 2156번
- java
- 코딩 테스트
- springboot
- Dxerr.h
- BOJ
Archives
- Today
- Total
Don't give up!
[Design Pattern] 데코레이터 패턴 (Decorator Pattern) 본문
개발서적/Head First Design Patterns
[Design Pattern] 데코레이터 패턴 (Decorator Pattern)
Heang Lee 2021. 8. 31. 23:48이 글은 에릭 프리먼의 'Head First Design Patterns'를 읽고 TIL(Today I Learned)로써 정리한 내용을 기록하는 글입니다.
자세한 내용은 책을 통해 확인하실 수 있습니다.
알라딘: Head First Design Patterns (aladin.co.kr)
데코레이터 패턴(Decorator Pattern)
데코레이터 패턴은 객체에 기능을 동적으로 추가할 수 있도록 만드는 패턴입니다.
데코레이터 패턴은 클래스를 상속받는 데코레이터가 부모 클래스와 has-a 관계를 가지면서 그 객체의 메소드의 호출 결과에 새로운 기능을 추가할 수 있게 합니다.
이는 확장에 대해서는 열려 있지만 변경에 대해서는 닫혀 있어야 하는 객체지향 원칙(OCP)에 부합합니다.
데코레이터는 이를 상속받은 다른 데코레이터와 has-a 관계를 형성할 수 있습니다.
구성 요소를 감싸는 데코레이터의 개수에 제한이 없기 때문에 데코레이터 패턴을 남발할 경우 코드가 필요 이상으로 복잡해질 수 있다는 단점이 있습니다.
public abstracrt class Beverage {
String description = "제목 없음";
public String getDescription() {
return description;
}
public abstract double cost();
}
public abstract class CondimentDecorator extends Beverage {
public abstract String getDescription();
}
public class Espresso extends Beverage {
public Espresso() {
description = "에스프레소";
}
public double cost() {
return 1.99;
}
}
public class Mocha extends CondimentDecorator {
Beverage beverage;
public Mocha(Beverage beverage){
this.beverage = beverage;
}
public String getDescription() {
return beverage.getDescription() + ", 모카";
}
public double cost() {
return .20 + beverage.cost();
}
}
'개발서적 > Head First Design Patterns' 카테고리의 다른 글
[Design Pattern] 팩토리 패턴 (Factory Pattern) (0) | 2021.09.20 |
---|---|
[Design Pattern] 옵저버 패턴(Observer Pattern)과 발행-구독 패턴(Publisher-Subscriber Pattern) (0) | 2021.08.28 |
[Design Pattern] 전략 패턴(Strategy Pattern) (0) | 2021.08.24 |