Template Method 패턴 이란?
Template은 형판이나 어떤 형태의 틀이 라는 사전적인 의미를 갖고 있다.
예를 들면 우리가 초등학생때 어떤 플라스틱 판에 종이를 깔고
플라스틱 판 모양 그대로 도형을 따라 그린 경험이 있다면
이때 이 플라스틱 판은 템플릿이 된다.
즉 이미 갖춰져 있는 틀(Template)에 따라 그리는 행동(구현)을 Template Method 이라고 부른다.
이제 정사각형, 원, 삼각형의 템플릿을 만들고 이를 그리는 행동에 대해 프로그래밍 하면 다음과 같다.
fun main() {
val squareTemplate: Template = SquareTemplate()
val circleTemplate: Template = CircleTemplate()
val triangleTemplate: Template = TriangleTemplate()
squareTemplate.draw()
circleTemplate.draw()
triangleTemplate.draw()
}
class SquareTemplate : Template() {
override fun draw() {
println("Draw Square")
}
}
class CircleTemplate : Template() {
override fun draw() {
println("Draw Circle")
}
}
class TriangleTemplate : Template() {
override fun draw() {
println("Draw Triangle")
}
}
abstract class Template {
abstract fun draw()
}
Template Method 패턴은 왜 쓰이는걸까?
Template Method 패턴은 공통적인 기능에 대해 추상화를 진행할 수 있다.
또한 하위 클래스는 공통적인 상위 클래스를 상속받기 때문에 다형성을 가질 수 있다.
예를 들면 아래와 같이 draw함수를 만들면
어떤 템플릿을 넘기든 하위 클래스의 draw메소드를 호출 할 수 있다.
fun draw(template: Template){
template.draw()
}
참고 : 자바언어로 배우는 디자인패턴 입문
'기타 > 자바 디자인패턴' 카테고리의 다른 글
[자바 디자인패턴] 5. Dynamic Proxy 패턴 (0) | 2023.03.01 |
---|---|
[자바 디자인패턴] 4. Proxy 패턴 (0) | 2023.02.12 |
[자바 디자인패턴] 3. Factory Method 패턴 (0) | 2022.08.14 |
[자바 디자인패턴] 1. Adapter 패턴 (0) | 2022.08.13 |
댓글