일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 컴퓨터 네트워크
- react hook
- 리액트 훅
- useState
- 코딩테스트 고득점 Kit
- design pattern
- react firebase
- react
- 프로그래머스 자바
- 자바
- 코딩테스트 고득점 Kit 완전탐색
- React JS
- 자바 공부
- useEffect
- NextJS
- 데이터모델링과마이닝
- 디자인 패턴
- 자바스크립트
- vanillaJS
- codesandbox
- 코틀린
- Java
- 장고
- 프로그래머스
- 리액트
- JavaScript
- 프로그래머스 완전탐색
- 백준
- websocket
- 프로그래밍 언어론
- Today
- Total
기록하는 개발자
11. Template Method Pattern 본문
문제
알고리즘들을 캡슐화시키면서 중복되는 코드가 여러 클래스에 존재함
해결 방안
알고리즘의 중복되는 부분을 부모 class에 추상화 시키고 달라지는 부분만 subclass에서 구현
목적
- 알고리즘의 뼈대를 정의하고, 일부를 subclass로 위임한다.
- Template Method는 알고리즘 구조를 변경하지 않고, 알고리즘의 일부 내용을
subclass에서 재정의할 수 있도록 한다.
*strategy는 interface로 누구나 쓸 수 있도록 한 것
결과
- 중복되는 코드를 줄임.
- 유지 보수에 유리함
Template Method Pattern
Template Method 는 알고리즘의 각 단계들을 정의하며, 그 중 한 개 이상의 단계가 subclass에 의해 제공될 수 있다.
헐리우드 원칙
Template Method 를 이용해서 프로그램을 설계하면서 "우리가 연락할테니 먼저 연락하지 마"라고 얘기하는 셈
-저수준(low level)구성 요소에서 시스템에 접속할 수 있지만,
언제 어떤 식으로 그 구성 요소들을 사용할 지는 고수준 구성요소에서 결정 -> 단방향 커뮤니케이션
Template Method Pattern 의 활용 예
프레임워크를 만드는 데 유용함
-프레임워크를 사용하므로써 작업이 처리되는 방식은 제어하면서,
프레임 워크에서 처리하는 알고리즘의 각 단계는 그 프레임 워크를 사용하는 사람 마음대로 지정 가능
ex) Arrays의 sort()함수, 스윙의 JFrame, Applet
Template Method vs Strategy
Strategy pattern은 Template method pattern과 비슷하지만 차이가 있다
Template method
상속을 통한 제어 흐름 추상화
-Template method에서 알고리즘의 골격을 정의
-Template method를 이용하면 알고리즘의 구조는 유지하면서 subclass에서 특정 단계를 새로 정의 가능(override)
- 알고리즘의 일부를 다른 class에게 맡김
Strategy
-알고리즘군을 정의하고 각각을 캡슐화하여 교환해서 사용
-알고리즘을 사용하는 client와는 독립적으로 알고리즘 변경 가능
-Template method와는 달리 알고리즘 전체를 위임
+) Factory method는 template method의 특화된 버전이기도 하다.