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 | 31 |
Tags
- 사면초가
- TDD
- 공통규약
- 공통기술
- MVC요청플로우
- 로그백
- 디스크i/o
- SpringLegacy
- 커뮤니티서버
- 클린아키텍처
- 전전긍긍
- SEQUENCE
- string
- MVC
- 이벤트핸들러등록
- OOP
- 냄새라도
- AOP
- DDD
- JPA
- Transaction
- 문제선택근거
- springsecurity
- index
- 단위테스트
- 이벤트핸들러this
- 설정세팅
- model
- JDBC
- Ajax
Archives
- Today
- Total
개발이군고구마
[Spring : Design Pattern] 1. Template Method (Abstract Class) 본문
728x90
1. 개요
- 변하는 부분과 변하지 않는 부분을 분리하여 코드의 재사용을 도모함
- 그렇다면 abstract class 를 만들어서 abstract method 에 변화 가능한 소스를 심어주는 방법
2. 소스의 예

- Kafka 에 데이터를 담을 때 사용하는 template method 패턴
- 중간에 abstract class를 구현하는 class를 만들고 -> 그 class를 의존성 주입을 받음 (중간 단계 추가)
[Abstract Template Class]
class abstract class KafkaTemplate {
public ListenableFuture<> send (Class class) {
지속적으로 반복하는 소스 코드
}
protected abstract void onFailureCase(String topic, Dto message) {
상속받는 객체가 구현해야할 변하는 값
}
}
[구현 중간 단계]
public class BusinessTemplate extends KafakaTemplate{
생성자 super
@Override
protected void onFailureCase(String topic, Dto message){
변하는 부분
}
}
[실행 - 구현 클래스를 의존성 주입 받음]
public class MainTest {
@Autowired
private BusinessTemplate businessTemplate;
businessTemplate.send(topicName, new DTO(pk, mbr));
}

- 구현 중간 단계 없고, 바로 abstractClass를 구현하는 경우
-> innerClass를 사용할 수 있음 (abstract class 인스턴스 생성시에 abstract 메소드에 대한 정의)
CommonKafkaTemplate template = new CommonKafkaTemplate () {
@Override
protected void onFailureCase (String topicName, Dto message){
변하는 부분
}
}
template.send(topicName, message);
'SERVER > Spring' 카테고리의 다른 글
| Session 사용 이유와 방법 (0) | 2024.10.27 |
|---|---|
| [Spring : Design Pattern] 2. Template Callback (인수 interface) (0) | 2024.10.04 |
| Thread와 ThreadLocal (0) | 2024.10.02 |
| 데이터는 어떻게 주고 받을까? - 2. 데이터 매핑과 응답 (0) | 2024.09.15 |
| 데이터는 어떻게 주고 받을까? - 1. 데이터 전달하기 (0) | 2024.09.15 |