본문 바로가기
  • 실행력이 모든걸 결정한다
Spring Series/Spring Framework

[Spring] Template/Callback 패턴

by 김코더 김주역 2022. 3. 19.
반응형

템플릿/콜백 방식은 전략 패턴과 DI의 장점을 익명 내부 클래스 방식과 결합하는 방법을 사용한다.

 

1. Template

- 어떤 목적을 위해 미리 만들어둔 틀을 말하며, 이 고정된 틀 안에 바꿀 수 있는 부분을 넣어서 효율적으로 사용된다.

- 고정된 작업 흐름을 가진 코드를 재사용할 때 유용하게 쓰인다.

- Template/Callback 패턴에서 Callback 오브젝트를 받는 곳이다.

 

 

2. Callback

- 다른 오브젝트에서 실행되는 것을 목적으로 다른 오브젝트의 메소드에 전달하는 오브젝트로, 주로 파라미터를 통해 전달된다.

- 다른 오브젝트에서 콜백 오브젝트의 값을 참조하기보다는, 콜백 오브젝트의 메소드를 실행시키기 위한 목적으로 사용된다.

- 일반적으로 하나의 메소드를 가진 인터페이스를 구현한 익명 내부 클래스로 만들어진다.

 

 

3. Template/Callback의 흐름

위의 그림과 같이 보면 이해가 빨리 될 것이다.

 

-> 먼저, 클라이언트에서는 Template으로 보낼 Callback 오브젝트를 만든다. 이 때 클라이언트는 Template에서 수행해주기를 바라는 메소드를 가진 인터페이스를 구현한 익명 내부 클래스를 작성한다.

-> Callback 오브젝트를 Template 메소드의 파라미터로 전달한다.

-> Template에서는 정해진 알고리즘으로 작업을 진행하면서 클라이언트에게 받은 Callback 오브젝트를 사용(메소드 호출)한다. 

-> Callback 오브젝트의 메소드가 작업을 수행하고 수행 결과를 Template에 돌려준다.

-> 그 수행 결과를 통해 Template은 남은 작업을 진행하고 Template이 최종적으로 수행한 결과를 클라이언트에게 전달한다.

 

이렇게 Template/Callback 패턴은 알고리즘을 추상화해서 중간 과정을 갈아 끼워넣는 전략 패턴을 잘 이용한 패턴이다.

 

 

 

● 참고 자료 : 토비의 스프링 3.1

반응형

댓글