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
- 디자인패턴
- Linux
- Java
- 직장인점심
- 개발자
- 성수직장인
- 코딩
- 깨끗한코드
- docker
- 헤드퍼스트디자인패턴
- 객체지향
- 성수핫플
- 주니어개발자
- 성수
- 헤드퍼스트
- 객체지향프로그래밍
- 클린코드
- 오브젝트
- 책읽기
- 성수볼거리
- 독서
- 상속
- JavaScript
- IntelliJ
- 책너두
- JAVA개발자
- 독서일지
- 성수맛집
- DesignPattern
- 직장인
Archives
- Today
- Total
닭발개발
[헤드퍼스트 디자인패턴] 24일차. 317-334pg 본문
728x90
24일차
헤드퍼스트 디자인패턴 [4주차_토요일]
317-334pg
요약
CHAPTER 08. 알고리즘 캡슐화하기 (feat. 템플릿 메소드 패턴)
- 서브클래스에서 언제든 필요할 때마다 알고리즘을 가져다가 쓸 수 있도록 캡슐화한다.
[ Coffee 클래스와 Tea 클래스 추상화하기 ]
- 커피와 홍차 제조법의 알고리즘이 똑같다.
- prepareRecipe() 메소드 추상화하기
- Coffe 클래스 : brewCoffeeGrinds(), addSugarAndMilk()
- Tea 클래스 : steepTeaBag(), addLemon()
- 커피를 우리다, 티백을 우리다 → brew()
- 설탕우유 추가, 레몬 추가 → addCondiments()
[ 템플릿 메소드 패턴 ]
- prepareRecipe()는 템플릿 메소드이다.
- 이유1. prePareRecipe()도 메소드다.
- 이유2. 어떤 알고리즘의 템플릿(틀) 역할을 한다. 여기서는 카페인 음료를 만드는 알고리즘의 템플릿.
- 템플릿 내에서 알고리즘의 각 단계는 메소드로 표현된다.
- 서브클래스에서 구현해야 하는 메소드는 abstract로 선언해야 한다.
- 템플릿 메소드는 알고리즘의 각 단계를 정의하며, 서브캘르스에서 일부 단계를 구현할 수 있도록 유도합니다.
[ 템플릿 메소드 패턴의 장점 ]
- 알고리즘 독점
- 서브클래스에서 코드 재사용
- 한 부분만 고치면 됨.
- 다른 음료도 쉽게 추가 가능
[ 템플릿 메소드 패턴의 정의 ]
- 알고리즘의 골격을 정의한다.
- 템플릿 메소드를 사용하면 알고리즘의 일부 단계를 서브클래스에서 구현할 수 있으며,
- 알고리즘의 구조는 그대로 유지하면서 알고리즘의 특정 단계를 서브클래스에서 재정의할 수도 있다.
[ 템플릿 메소드 속 후크(hook) ]
- 추상클래스에서 선언되지만 기본적인 내용만 구현되어 있거나 아무 코드도 들어있지 않은 메소드
- customerWandtsCondiments() 메소드로 실행 여부가 결정되는 조건문을 추가. → 고객이 첨가물을 넣어달라고 했을 때만, addCondiments()가 호출된다.
- 후크 활용하기
- 후크를 사용하려면 서브클래스에서 후크를 오버라이드 해야한다.
[ 할리우드 원칙 ]
- 먼저 연락하지 마세요. 저희가 연락드리겠습니다.
- 할리우드 원칙을 활용하면 의존성 부패(dependency rot)을 방지할 수 있다.
- 의존성 부패 : 의존성이 복잡하게 꼬여있는 상황
- 할리우드 원칙은 저수준 구성 요소가 시스템에 접속할 수는 있지만, 언제 어떻게 그 구성 요소를 사용할지는 고수준 구성요소가 결정한다.
[ 할리우드 원친과 템플릿 메소드 패턴 ]
- 템플릿 메소드 패턴을 써서 디자인 하면 서브클래스에게 “ 먼저 연락하지마” 라고 얘기하는 셈.
발췌
💡 템플릿 메소드는 알고리즘의 각 단계를 정의하며, 서브캘르스에서 일부 단계를 구현할 수 있도록 유도합니다.
💡 템플릿 메소드 패턴은 알고리즘의 템플릿(틀)을 만든다. 템플릿은 일련의 단계로 알고리즘을 정의한 메소드.
728x90
반응형
'책책책 책을 읽읍시다‼ ver.개발 > [ 헤드퍼스트 디자인패턴 ]' 카테고리의 다른 글
[헤드퍼스트 디자인패턴] 26일차. 346-360pg (2) | 2023.05.31 |
---|---|
[헤드퍼스트 디자인패턴] 25일차. 335-345pg (1) | 2023.05.31 |
[헤드퍼스트 디자인패턴] 23일차. 305-316pg (0) | 2023.05.26 |
[헤드퍼스트 디자인패턴] 22일차. 294-304pg (0) | 2023.05.19 |
[헤드퍼스트 디자인패턴] 21일차. 284-293pg (0) | 2023.05.18 |