[토비의 스프링 3장] 템플릿

바퀴달린 개발자·2022년 2월 25일

스프링

목록 보기
3/4

템플릿이란 바뀌는 성질이 다른 코드 중에서 변경이 거의 일어나지 않으며 일정한 패턴으로 유지되는 특성을 가진 부분을 자유럽게 변경되는 성지을 가진 부분으로부터 독립시켜 효과적으로 활용할 수 있는 방법

변하는 부분을 변하지 않는 나머지 코드에서 분리하는 것이 어떨까?

템플릿 메소드 패턴

  • 상속을 통해 기능을 확장해서 사용하는 부분
  • 변하지 않는 부분은 슈퍼 클래스, 변하는 부분은 추상 메소드로 정의해둬서 서브클래스에서 오버라이드하여 새롭게 정의해 쓰도록 하는 것이다.

전략 패턴

  • 오브젝트를 아예 둘로 분리하고 클래스 레벨에서는 인터페이스를 통해서만 의존하도록 만든다.

DI 적용을 위한 클라이언트/컨텍스트 분리

JDBC 전략 패턴의 최적화

로컬 클래스

클래스 파일이 많아지는 문제는 전략 클래스를 매번 독립된 파일로 만들지 말고 UserDao 클래스 안 내부 클래스로 정의해버려라

  • 특정 메소드에서만 사용되는 것이라면 로컬 클래스로 만들어라

익명 내부 클래스

  • 클래스 이름을 제거 할 수 있다.
  • 클래스 선언과 오브젝트 생성이 결합된 형태
  • new 인터페이스이름() { 클래스 본문 } ;

컨텍스트와 DI

  • 클래스 분리
  • 빈 의존관계 변경

의존관계 주입이라는 개면ㅇ므 인터페이스를 사이에 둬서 클래스 레벨에서는 의존관계가 고정되지 안헥하고, 런타임 시에 의존할 오브젝트와의 관계를 다이나믹하게 주입해주는 것이 맞다.
넓게 보자면 객체의 생성과 관계 설정에 대한 제어 권한을 오브젝트에서 제거하고 외부로 위임했다는 IoC라는 개념을 포괄한다.

템플릿과 콜백

전략 패턴의 기본 구조에 익명 내부 클래스를 활용한 방식을 템플릿/콜백 패턴이라고 부른다.
(전략 패턴의 컨텍스트를 템플릿이라 부르고, 익명 내부 클래스로 만들어지는 오브젝트를 콜백이라고 부른다.)

템플릿 콜백의 동작 원리

템플릿/콜백의 특징

  • 단일 메소드 인터페이스 사용
    템플릿 작업 흐름 중 특정 기능을 위해 한 번 호출되는 경우가 일반적이기 때문이다.

0개의 댓글