본문 바로가기
✨ Java/디자인 패턴(Design pattern)

자바(JAVA) - 템플릿 메소드 패턴(Template Method Pattern)

by 환풍 2023. 7. 26.
728x90

템플릿 메소드 패턴이란?

객체지향 프로그래밍에서 사용되는 설계 기법 중 하나로,
상위 수준의 알고리즘을 정의하고 하위 클래스에서 알고리즘의 일부 단계를 구체화할 수 있도록 하는 것이 목적.

 

템플릿 메소드 패턴은 추상 클래스를 사용한다.

부모 클래스에게 추상화를 시켜 이를 상속받은 자식 클래스에서 구체화하면서 완성할 수 있다.

 

즉, 변하지 않는 기능(템플릿)은 상위 클래스에 만들고, 자주 변경되며 확장할 기능은 하위 클래스에서 만들도록 하여,

상위의 메소드 실행 동작 순서는 고정하며 세부 실행 내용은 다양화 될 수 있는 경우에 사용. 코드의 중복을 없애기 위함.

 

 


Animal.class  ( 부모 클래스를 추상 클래스로 만들어준다.)

부모 클래스역할을 하는 Animal 클래스에 하나 이상의 추상 메소드를 만들어, 하위 클래스에서 구체화할 수 있도록 한다.

 

People, Dog.class  ( 자식 클래스로 추상 메소드를 구체화 해줘야한다. ) 

 

TemplateMethod.class (Main 메소드)

main 메소드에서 각 객체를 생성해줄 때마다, 객체에 있는 메소드들이 실행되며 부모 생성자까지 접근하여 메소드를 호출할 수 있다. 

그렇다면 왜? 사용할까

템플릿 메소드를 사용하지 않고 위처럼 코드를 작성하면, 불필요한 중복 코드가 계속해서 발생될 수 있으며,

코드를 확장해서 재사용할 수 없다.  그렇다고 해서 템플릿 메소드를 주구장창 사용하기엔 알맞지 않다.

 

장점

  • 중복 코드를 줄일 수 있다.
  • 자식 클래스의 역할을 줄이고, 핵심 로직을 부모 클래스에서 관리하므로 관리가 용이해진다.
  • 코드를 객체지향적으로 구성할 수 있다.

 

단점

  • 추상 메소드가 많아지면서 클래스 관리가 복잡해질 수 있다.
  • 알고리즘 구조가 복잡할수록 템플릿 로직 형태를 유지하기 어렵다.
  • 하위 클래스를 통해 기본 단계 구현을 억제하여 리스코프 치환 법칙을 위반할 수 있다.
  • 자식 클래스는 실제로 부모 클래스를 사용하지 않는데, 단순히 패턴 구현을 위한 상속 때문에 의존 관계를 가짐.
반응형

댓글