dev/🧩 디자인패턴
템플릿 메소드 패턴이란? (Template Method Pattern)
wugawuga
2022. 12. 11. 04:00
템플릿 메소드 패턴이란?
알고리즘의 구조를 정의
알고리즘의 일부 단계를 서브클래스에서 구현할 수 있고,
알고리즘의 구조를 그대로 유지하면서 특정 단계를 서브클래스에서 재정의할 수 있다
이 패턴을 언제 적용을 하면 좋을까?
반복되어 작성하는 코드가 발생할 때 고려해보자
반복되는 코드를 포함하는 여러 클래스가 있는 경우에!!
장점
- 반복되는 알고리즘이 큰 로직을 가지고 있을 때 특정 부분만 오버라이드해서 변경에 대한 영향을 줄일 수 있다
- 중복 코드를 인터페이스 또는 부모 클래스로 가져올 수 있다
왜 추상클래스에 관한 예시가 많은 것일까
자바 8 이전에는 인터페이스가 default 함수를 가지지를 못했기 때문이다
default 메소드는 final 키워드를 적용할 수 없어서 재정의 가능하고 내부 알고리즘 코드들이 public abstract 라 의도치 않게 노출될 수 있고 호출될 수 있어서 템플릿 메소드 패턴을 만들 수 없다
단점
- 일부 클라이언트는 제공되는 이 골격에 의해 제한될 수 있다
- 자식 클래스를 통해 구현을 해야해서 LSP(리스코프 치환 원칙)을 위반할 수 있다