본문 바로가기
Object-Oriented Programming/Design Pattern

Template method pattern, 템플릿 메소드 패턴

by yongmin.Lee 2022. 5. 16.

Template method pattern

템플릿 메소드 패턴

 

정의

  • 템플릿 메소드 패턴은 알고리즘의 골격을 정의하고 알고리즘의 일부 단계를 서브클래스에서 구현함으로써, 알고리즘의 구조는 그대로 유지하면서 여러곳에서 다른형태로 사용이 필요한 경우 유용하게 사용할수 있다.
  • 전체적인 레이아웃을 통일하지만 상속받은 클래스는 훅 메소드를 이용하여 확장할 수 있도록 유연성을 주는 디자인 패턴
  • 상속을 통해 슈퍼클래스의 기능을 확장할 때 사용하는 가장 대표적인 방법. 변하지 않는 기능은 슈퍼클래스에 만들어두고 자주 변경되며 확장할 기능은 서브클래스에서 만들도록 한다.

 

예제

다이어그램


1. 추상클래스

protocol Ramen {
    func makeRamen()  // template method
    func boilWater()
    func putNoodles()
    func putExtra()
    func waitForMinutes()
}

extension Ramen {
    func makeRamen() {
        boilWater();
        putNoodles();
        putExtra();
        waitForMinutes();
    }
    func boilWater() {
        print("물을 끓인다.")
    }
    func putNoodles() {
        ("면을 넣는다.")
    }
}

 

2. 구현클래스 : ShinRamen

class ShinRamen: Ramen {
    override func putExtra() {
        print("계란을 넣는다.")
    }
    override func waitForMinutes() {
        print("4분 기다린다.")
    }
}

 

3. 구현클래스 : RaccoonRamen

class RaccoonRamen: Ramen {
    override func putExtra() {
        print("다시마를 넣는다.")
    }
    override func waitForMinutes() {
        print("5분 기다린다.")
    }
}

 

 

 

 

참고자료

https://steady-coding.tistory.com/384

https://jeonyeohun.tistory.com/391