🗓️23.09.28
템플릿 메서드 패턴은 무엇인가? 🤔
- Behavioral design pattern
- 템플릿 메서드(Template Method)는
super
클래스에서 여러 메서드로 이루어진 알고리즘 틀을 정의함
- 이러한 알고리즘 틀을
Template Method
라고 하며, sub
클래스는 Template Method
에서 단계별로 이루어진 메서드들을 override
할 수 있도록 만들어 구조를 변경하지 않고 알고리즘의 특정 단계를 재정의 할 수 있도록 하는 디자인 패턴
protocol RegistrationSupportable {
func register()
func inputId()
func validateId()
func inputPassword()
func validatePassword()
func reinputPassword()
func validateReInputPassword()
func presentSuccess()
}
extension RegistrationSupportable {
func register() {
inputId()
validateId()
inputPassword()
validatePassword()
reinputPassword()
validateReInputPassword()
presentSuccess()
}
}
언제 사용 되나요 ⁉️
- 패턴을 사용하는 코드 부분에서 특정 단계만 수정 가능하도록 할때
- 전체 알고리즘이나 구조를 변경할 수 없도록 하고 싶을 때
- 어떤 알고리즘이나 프로세스가 여러 단계로 나누어져 있을 때 사용
장점 👍
- 패턴을 사용하는 부분에서 특정 부분의 메서드를
override
해도 알고리즘의 다른 부분은 영향을 덜 받도록 할 수 있음
- 중복된 코드를 슈퍼 클래스에서 한 번만 정의해도 되기 때문에 효율적
단점 👎
- 클라이언트가 이미 정의된 알고리즘만 사용할 수 있기 때문에 제한받는 상황이 있을 수 있음
- 템플릿 메서드에 필요한 단계가 많다면 유지하기 어려울 수 있음
- 리스코프 치환 법칙을 위배할 수 있음