[Java] Template Callback Pattern
템플릿 콜백이란?
템플릿 콜백 패턴은 변하지 않는 부분은 냅두고 변하는 부분은 커스터마이징하여 사용할 수 있게 해준다.
클라이언트는 템플릿 오브젝트의 메서드에 콜백을 구현해 제공한다.
템플릿은 메서드 수행중에 제공받은 콜백 메서드를 호출하고 그 반환값을 사용해 나머지 작업을 수행한다. 그림으로 보자면 이렇다.
구현해보기
햄버거를 만들자. 템플릿에는 빵이 있고
우리는 패티를 콜백으로 제공할 것이다.
Hamburger class(템플릿)
public class Hamburger {
public void makeBurger(Patty patty){
System.out.println("참깨빵");
//콜백 메서드 호출
String pattyName = patty.getPattyName();
if(pattyName.equals("순쇠고기")){
pattyName += " 패티두장";
} else if(pattyName.equals("특별한 소스")){
pattyName += " 양상추";
}
System.out.println(pattyName);
System.out.println("참깨빵");
}
}
Patty interface(콜백)
//함수형 인터페이스라는 것을 명시
@FunctionalInterface
public interface Patty {
String getPattyName();
}
Cook class (클라이언트)
public class Cook {
public void cookBurger(){
Hamburger hamburger = new Hamburger();
hamburger.makeBurger(new Patty() {
@Override
public String getPattyName() {
return "순쇠고기";
}
});
// 람다식을 이용해 ()-> "순쇠고기"; 이런식으로 더 간결하게 작성할 수 잇다.
}
}
Test
public class test {
public static void main(String[] args) {
Cook cook = new Cook();
cook.cookBurger();
}
// 결과)
// 참깨빵
// 순쇠고기 패티두장
// 참깨빵
}
스프링의 JdbcTemplate 은 실제로 이 패턴을 응용해 설계됐다고 한다.
JdbcTemplate 은
Connection 과 같은 리소스들을 가져오고
쿼리를 실행하고(콜백)
다시 리소스들을 반환해 준다.
Author And Source
이 문제에 관하여([Java] Template Callback Pattern), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@cksdnr066/Java-Template-Callback-Pattern저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)