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
- 주니어개발자
- 성수볼거리
- 디자인패턴
- 책너두
- 직장인점심
- 상속
- DesignPattern
- 헤드퍼스트
- 클린코드
- 오브젝트
- 성수직장인
- 객체지향프로그래밍
- 직장인
- 개발자
- JavaScript
- 성수핫플
- 독서일지
- Java
- 성수맛집
- docker
- 깨끗한코드
- Linux
- 코딩
- 헤드퍼스트디자인패턴
- 책읽기
- 객체지향
- IntelliJ
- 독서
- JAVA개발자
- 성수
Archives
- Today
- Total
닭발개발
[헤드퍼스트 디자인패턴] 9일차. 126-139pg 본문
728x90
9일차
헤드퍼스트 디자인패턴 [수요일]
126-139pg
요약
CHAPTER 03. 객체 꾸미기 (feat. 데코레이터 패턴)
[ Beverage 클래스 작성하기 ]
어떤 구성 요소를 가지고 데코레이터를 만들 때 새로운 행동을 추가하지. 새로운 행동은 객체를 구성해서 얻는 거잖아. 슈퍼클래스로부터 행동을 상속받아서 얻는 것이 아님.
→ 행동을 상속받으려고 Beverage의 서브클래스를 만든 게 아니라 형식을 맞추려고 한 것.
if 상속만 써야 했다면
행동이 컴파일 시에 정적으로 결정되어 버림. 슈퍼클래스에서 받은 것과 코드로 오버라이드한 것만 쓸 수 있음.
[ 코드구현 ]
Beverage는 추상 구성요소,
HousBlend는 구상 구성요소
추상데코레이터 (CondimentDecorator)
구상데코레이터 - 모카
모카 인스턴스에 필요한 것.
- 감싸고자 하는 음료를 저장하는 인스턴스 변수
- 인스턴스 변수를 감싸고자 하는 객채로 설정하는 생성자
[ 데코레이터 적용 예 : 자바 I/O ]
InputStream : 추상 구성 요소
FileInputStream, StringBufferInputStream, ByteArrayInputStream : 구상 구성요소
PushbackInputStream, BufferedInputStream : 구상 데코레이터
[ 디자인 도구 상자 ]
객체지향 원칙 : 클래스는 확장에는 열려있어야 하지만 변경에는 닫혀 있어야 한다.(OCP)
객체지향 패턴 : 데코레이터 패턴
발췌
💡 주의! 구상 구성 요소로 돌아가는 코드를 만들어야 한다면 데코레이터 패턴 사용을 다시 한번 생각해보자
💡 데코레이터를 도입하면 구성요소를 초기화 하는데 필요한 코드가 훨씬 복잡해진다.
메모
-없음
숙제
숙제1. 이미지
숙제2. 131p
두유(Soy)와 휘핑크림(Whip)용 코드 만들기
public class Soy extends CondimentDecorator {
public Soy (Beverage beverage) {
this.beverage = beverage;
}
public String getDescription() {
return beverage.getDescription() + ", 두유";
}
public double cost() {
return beverage.cost() + .15;
}
}
public class Whip extends CondimentDecorator {
public Whip (Beverage beverage) {
this.beverage = beverage;
}
public String getDescription() {
return beverage.getDescription() + ", 휘핑크림";
}
public double cost() {
return beverage.cost() + .10;
}
}
728x90
반응형
'책책책 책을 읽읍시다‼ ver.개발 > [ 헤드퍼스트 디자인패턴 ]' 카테고리의 다른 글
[헤드퍼스트 디자인패턴] 11일차. 153-165pg (0) | 2023.05.08 |
---|---|
[헤드퍼스트 디자인패턴] 10일차. 140-152pg (0) | 2023.05.04 |
[헤드퍼스트 디자인패턴] 8일차. 114-125pg (0) | 2023.05.02 |
[헤드퍼스트 디자인패턴] 7일차. 102-113pg (0) | 2023.05.02 |
[헤드퍼스트 디자인패턴] 6일차. 87-101p (0) | 2023.05.02 |