TIL114 ✨

YaR Lab·2023년 9월 29일
0

TIL✨

목록 보기
96/135
post-thumbnail

🗓️23.09.28

템플릿 메서드 패턴은 무엇인가? 🤔

  • Behavioral design pattern
  • 템플릿 메서드(Template Method)는 super 클래스에서 여러 메서드로 이루어진 알고리즘 틀을 정의함
  • 이러한 알고리즘 틀을 Template Method 라고 하며, sub 클래스는 Template Method 에서 단계별로 이루어진 메서드들을 override 할 수 있도록 만들어 구조를 변경하지 않고 알고리즘의 특정 단계를 재정의 할 수 있도록 하는 디자인 패턴
protocol RegistrationSupportable {
    // template method
    func register()
 
    // steps
    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 해도 알고리즘의 다른 부분은 영향을 덜 받도록 할 수 있음
  • 중복된 코드를 슈퍼 클래스에서 한 번만 정의해도 되기 때문에 효율적

단점 👎

  • 클라이언트가 이미 정의된 알고리즘만 사용할 수 있기 때문에 제한받는 상황이 있을 수 있음
  • 템플릿 메서드에 필요한 단계가 많다면 유지하기 어려울 수 있음
  • 리스코프 치환 법칙을 위배할 수 있음

0개의 댓글