일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 운영체제
- 파이썬 소스
- SQL
- 유사코드
- gradle
- MongoDB
- dynamic query
- auto configure
- K6
- 파이썬
- jsp
- JVM
- 자바
- 오라클
- 오라클 디비
- c#
- spring
- 프로젝트
- resilience4j
- 문법 정리
- smart cast
- 자바 프로젝트
- 초대장
- oracle
- 티스토리
- 학점
- 리눅스
- 백준 알고리즘
- 알고리즘
- hyperledger
Archives
- Today
- Total
모종닷컴
디자인 패턴3 - Template pattern 본문
반응형
학습 목표
- 일정한 프로세스를 가진 요구사항을 템플릿 메소드 패턴을 이용하여 구현
탬플릿 메소드 패턴 : 알고리즘의 구조를 메소드에 정의하고 하위 클래스에서 알고리즘 구조의 변경없이 알고리즘을 재정의 하는 패턴.
-> 변하지 않는 기능은 슈퍼클래스에서 만들어주고 자주 변경되어 확장할 기능은 서브클래스에서 만든다.
-> 변하지 않는 기능은 슈퍼클래스에서 만들어주고 자주 변경되어 확장할 기능은 서브클래스에서 만든다.
언제 쓰일까?
- 구현하려는 알고리즘이 일정한 프로세스가 있다.
- 구현하려는 알고리즘이 변경 가능성이 있다.
어떤 단계로 써야 할까?
- 알고리즘을 여러 단계로 나눈다.
ex) 게임에 접속 시 아이디 비밀번호 로그인 과정, 해당 회원의 등급(회원, 관리자) 확인 과정, 연결 과정
- 나눠진 알고리즘의 단계를 메소드로 선언한다.
ex) 위의 로그인 과정, 등급 확인 과정, 연결 과정 들을 각 각 메소드로 정의.
- 알고리즘을 수행할 템플릿 메소드를 만든다.
ex) 하나의 메소드 안에 이 과정들을 담는다.
- 하위 클래스에서 나눠진 메소드들을 구현한다.
ex) 나눠진 알고리즘의 단계를 하위 클래스들이 구현한다.
AbstGameConnectHelper클래스의 requestConnection 메소드는 abstract로 선언한 메소드들을 담고 있는 템플릿 메소드입니다.
DefaultGameConnectHelper클래스는 위의 클래스를 상속받은 클래스로 각 각의 나눠진 메소드들을 정의하는 클래스입니다.
이렇게 구현이 되었다고 생각했을 때 , 보안 과정에 추가적인 문제를 선언해야 한다면 프로세스(requestConnection)를 변경할 필요없이 DefaultGameConnectHelper클래스의 doSecurity메소드만 재정의하면 된다는 것이다.
템플릿 메소드의 정의를 다시 한번 보도록 하자
"알고리즘의 구조를 메소드에 정의하고 하위 클래스에서 알고리즘 구조의 변경없이 알고리즘을 재정의 하는 패턴"
반응형
'Programming > 디자인패턴' 카테고리의 다른 글
디자인 패턴6 - Prototype Pattern (0) | 2018.05.21 |
---|---|
디자인 패턴5 - Singleton Pattern (0) | 2018.05.21 |
디자인 패턴4 - Factory Method Pattern (0) | 2018.05.21 |
디자인 패턴2 - Adapter Pattern (0) | 2018.05.18 |
디자인 패턴1 - 전략 패턴 (0) | 2018.05.16 |