개발이군고구마

[Spring : Design Pattern] 2. Template Callback (인수 interface) 본문

SERVER/Spring

[Spring : Design Pattern] 2. Template Callback (인수 interface)

김구황 2024. 10. 4. 16:44
728x90

1. 개요

- Template method 패턴은 클래스를 만드는 번거로움이 있음
- Abstract Class는 상속을 받기 때문에,
- 인수로 변화하는 클래스를 담을 방법이 있을까?

 


2. 예시

 

- 동일한 로직이 반복되고, 특정 부분만 변화가 일어나는 경우에
- 그 변화하는 부분만 따로 인터페이스화 하여, 인수로 넘김 

- 인수(인터페이스)는 구현 클래스에서 정의


[Template]

public class CommonTemplate {
	public <T> void execute(Callback<T> callback) {
		변하지 않는 부분		
		…
		callback.commandHandler(createList, deleteList, updateList, dataList)
	}
}



[Callback interface]
변하는 부분을 담당하는 메서드

public interface CallBack<T>	{
	void commandHandler(List<T> createList, List<T> updateList, List<T> deleteList, List<T> dataList) throws Exception;
}

 


[Implement Class]
controller

Template 인스턴스 생성 후 -> execute 메서드 실행

인터페이스 구현한 인수를 넘김  

templete.execute (dto, new Callback<DTO> (){
	// interface 호출 부분 - 변하는 부분에 한해서 해당 메서드 실행됨 
	@Override
	public void commandHandler(List<DTO> createList, List<DTO> updateList, List<DTO> deleteList, List<DTO>dataList) throws Exception {
		component.delete(deleteList)
	}
})