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
'Object-Oriented Programming > Design Pattern' 카테고리의 다른 글
Decorator Pattern, 데코레이터 패턴 (0) | 2022.07.19 |
---|---|
Proxy pattern, 프록시패턴 (0) | 2022.07.19 |
Abstract Factory Pattern, 추상 팩토리 패턴 (0) | 2022.05.11 |
Factory Method Pattern, 팩토리 메소드 패턴 (0) | 2022.05.09 |
Facade Pattern (0) | 2022.05.04 |