티스토리 뷰
반응형
🚀 스프링에서 디자인 패턴의 중요성
디자인 패턴
은 실제 개발 현장에서 비즈니스 요구 사항을 프로그래밍으로 처리하면서 만들어진 다양한 해결책 중에서 많은 사람들이
인정한 가장 효율적인 예시를 정리한 패턴의 집합이다.
🌠 템플릿 메서드 패턴 - 의존 역전 원칙(DIP)
상위 클래스에 공통 로직을 수행하는 탬플릿 메서드와 하위 클래스에 오버라이딩을 강제하는 추상 메서드
또는 선택적으로 오버라이딩할 수 있는 훅(Hook) 메서드
를 두는 패턴이다.
템플릿 메서드 패턴 - 적용 후
public abstract class Animal {
// 템플릿 메서드
public void playWithOwner() {
System.out.println("귀염둥이 이리온...");
play();
runSomething();
System.out.println("잘했어");
}
// 추상 메서드
abstract void play();
// Hook(갈고리) 메서드
void runSomething() {
System.out.println("꼬리 살랑 살랑~");
}
}
public class Dog extends Animal {
@Override
// 추상 메서드 오버라이딩
void play() {
System.out.println("멍! 멍!");
}
@Override
// Hook(갈고리) 메서드 오버라이딩
void runSomething() {
System.out.println("멍! 멍!~ 꼬리 살랑 살랑~");
}
}
public class Cat extends Animal {
@Override
// 추상 메서드 오버라이딩
void play() {
System.out.println("야옹~ 야옹~");
}
@Override
// Hook(갈고리) 메서드 오버라이딩
void runSomething() {
System.out.println("야옹~ 야옹~ 꼬리 살랑 살랑~");
}
}
public class Driver {
public static void main(String[] args) {
Animal bolt = new Dog();
Animal kitty = new Cat();
bolt.playWithOwner();
System.out.println();
System.out.println();
kitty.playWithOwner();
}
}
)
🌠 정리
상위 클래스의 견본 메서드에서 하위 클래스가 오버라이딩 한 메서드를 호출하는 패턴
탬플릿 메서드 패턴의 구성 요소 | 상위 클래스 | 하위 클래스 |
---|---|---|
템플릿 메서드공통 로직을 수행, 로직 중에 하위 클래스에서 오버라이딩한 추상 메서드 / 훅 메서드를 호출 | playWithOwner() | |
템플릿 메서드에서 호출하는 추상 메서드 | play() | 오버라이딩필수 |
템플릿 메서드에서 호출하는 Hook 메서드 하위 클래스가 선택적으로 오버라이딩한다. | runSomething() | 오버라이딩선택 |
🧾 Reference
반응형
'SPRING 🍃 > 디자인패턴' 카테고리의 다른 글
디자인 패턴 - 펙터리 메서드 패턴 (0) | 2022.04.13 |
---|---|
디자인 패턴 - 탬플릿 콜백 패턴 (0) | 2022.04.12 |
디자인 패턴 - 전략 패턴 (0) | 2022.04.10 |
디자인 패턴 - 싱글톤 패턴 (0) | 2022.04.09 |
디자인 패턴 - 데코레이터 패턴 (0) | 2022.04.08 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 스프링부트
- springboot
- spring-cloud
- CS
- 자격증
- 면접
- Solid
- 백준
- 수학
- 그래프
- interview
- docker
- java
- 알고리즘
- security
- 스프링
- 매트랩
- Spring
- C언어
- Algorithm
- Matlab
- OOP
- 디자인패턴
- ajax
- 릿코드
- 자바
- JPA
- 프로그래머스
- kakao
- nginx
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함