본문 바로가기

Java

[Java] 템플릿 메서드 , 팩터리 메서드 , 전략 , 템플릿 콜백 패턴

 

템플릿 메서드 패턴

 

  • 상위 클래스의 견본 메서드에서 하위 클래스가 오버라이딩한 메서드를 호출하는 패턴
  • 의존 역전 원칙(DIP)을 활용

상위 클래스를 포함하는 추상 메서드

  • 상위 클래스 Animal에는 템플릿을 제공하는 playWithOwner() 메서드와 하위 클래스에게 구현을 강제하는 play() 추상메서드, 하위 클래스가 선택적으로 오버라이딩 할 수 있는 runSomething() 메서드가 있다.

하위 클래스를 포함하는 클래스

  • 하위 클래스인 Dog와 Cat은 상위클래스인 Animal에서 구현을 강제하고 있는 play() 추상메서드 반드시 구현
  • runSomething() 메서드는 선택적으로 오버라이딩할 수 있다.

  • 상위 클래스에 공통 로직을 수행하는 템플릿 메서드와 하위 클래스에 오버라이딩을 강제하는 추상메서드 또는 선택적으로 오버라이딩할 수 있는 훅(Hook) 메서드를 두는 패턴을 템플릿 메서드 패턴이라 한다.

 

팩터리 메서드 패턴(Factory Method Pattern)

 

  • 하위 클래스에서 팩터리 메서드를 오버라이딩해서 객체를 반환하는 패턴
  • 의존 역전 원칙(DIP)을 활용한다.

 

 

추상 클래스 Animal, AnimalToy

 

추상 클래스 오버라이딩 및 구현 

 

추상 클래스 오버라이딩 및 구현

 

 


 

전략 패턴(Strategy Pattern)

 

  • 클라이언트가 전략을 생성해 전략을 실행할 컨텍스트에 주입하는 패턴
  • 개방 폐쇄 원칙(OCP)과 의존 역전 원칙(DIP) 활용
  • 단일 상속만 가능한 자바에서는 상속이라는 제한이 있는 템플릿 메서드 패턴보다는 전략 패턴 활용

인터페이스와 인터페이스를 사용하는 컨텍스트

 

 

인터페이스 구현

 

  • 전략 메서드를 가진 전략 객체
  • 전략 객체를 사용하는 컨텍스트(전략 객체의 사용자)
  • 전략 객체를 생성해 컨텍스트에 주입하는 클라이언트(제3자, 전략 객체의 공급자)

 

템플릿 콜백 패턴(Template Callback Pattern - 견본/회신 패턴)

 

  • 전략 패턴을 익명 내부 클래스로 구현한 전략 패턴
  • 전략 패턴의 변형으로 스프링 모델 중 하나인 DI(의존성 주입)에서 사용하는 특별한 형태의 전략 패턴
  • 개방 폐쇄 원칙(OCP)과 의존 역전 원칙(DIP) 적용

인터페이스

 

전략을 생성하는 코드가 컨텍스트 내부로 들어옴

 

 


 

참고 자료

  • 스프링 입문을 위한 자바 객체 지향의 원리와 이해, 위키북스, 김종민(지은이)