디자인 패턴

Backend/Spring

템플릿 콜백 패턴

이전에 템플릿 메서드 패턴 포스팅에서 JdbcTemplate가 템플릿 메서드 패턴을 개선한 전략 패턴과 이를 이용한 스프링의 템플릿 콜백 패턴을 통하여 구현이 된다고 포스팅을 했었는데, 오늘은 그 템플릿 콜백 패턴이 어떻게 구성되는지 알아보는 시간입니다. JdbcTemplate 말고도, TransactionTemplate, RedisTemplate 등등 많은 부분에서 활용되기 때문에 해당 패턴을 이해하고 나면 이제 그림이 그려지실거라 생각합니다. 그럼 들어가기에 앞서서 먼저 콜백에 대해서 알 필요가 있습니다. 콜백이란? 프로그래밍에서 콜백(callback) 또는 콜애프터 함수(call-after function)는 다른 코드의 인수로서 넘겨주는 실행 가능한 코드를 말한다. 콜백을 넘겨받는 코드는 이 콜백..

Language

전략 패턴

이전 포스팅에서 템플릿 메서드 패턴에 대해서 학습하였습니다. 템플릿 메서드 패턴의 가장 큰 문제는 자식 클래스가 부모 클래스를 상속 받음으로써 부모 클래스에게 강하게 의존한다는 것이 문제였는데요. 좋은 객체지향 설계 원칙에서 두 가지를 지키지 못하는 상황이 발생해 버린 것이죠. 그 두 가지는 다음과 같습니다. 상속보다는 구성을 활용한다. 인터페이스에 맞춰서 프로그래밍을 한다. 전략 패턴은 이러한 템플릿 메서드 패턴의 단점을 해결 한 방식입니다. 우선 정의부터 살펴보도록 할까요? 전략 패턴의 정의 알고리즘 제품군을 정의하고 각각을 캡슐화하여 상호 교환 가능하게 만든다. 이 전략 패턴을 사용하면 알고리즘을 사용하는 클라이언트와 독립적으로 알고리즘을 변경할 수 있다. 알고리즘 군 여기서 알고리즘 제품군 이라는..

Language

템플릿 메서드 패턴

템플릿 메서드 패턴은 생각보다 우리 주변에서 굉장히 많이 사용되고 있습니다. 그 중에서 백엔드에서 스프링을 사용한다면 데이터베이스와 연동해서 어떠한 작업을 할 때 JdbcTemplate 라고 들어봤을 거에요. JdbcTemplate는 템플릿 메서드 패턴의 단점을 해결한 전략패턴과 스프링의 템플릿 메서드 콜백 패턴을 이용한 방식입니다. 템플릿 메서드 패턴이란 GOF에서 말하는 템플릿 메서드 패턴의 정의는 다음과 같습니다. 알고리즘의 골격을 정의하고 일부 단계를 하위 클래스로 이전한다. 하위 클래스가 알고리즘의 구조를 변경하지 않고 알고리즘의 특정 단계를 재정의 할 수 있다. 어떤 얘기인지 잘 이해가 안될텐데 다음 예시 코드를 한 번 살펴봅시다. @Test void templateMethodV0() { lo..

도서/헤드 퍼스트 디자인 패턴

[헤드 퍼스트 디자인 패턴] 1. 전략(Strategy) 패턴

전략 패턴 요구 사항 오리 시물레이션 게임에서 다음과 같은 클래스 설계 요청 이 게임에서는 오리는 꽥꽥 소리와 수영을 할 수 있다. Duck.class public abstract class Duck { protected void quack(){ System.out.println("꽥꽥"); } protected void swim() { System.out.println("수영 할 수 있습니다."); } abstract void display(); } 추상 클래스를 사용하여, Duck 슈퍼 클래스 생성 MallardDuck.class public class MallardDuck extends Duck { @Override public void display() { quack(); swim(); Syste..

Bombo_
'디자인 패턴' 태그의 글 목록