본문 바로가기
기타/자바 디자인패턴

[자바 디자인패턴] 2. Template Method 패턴

by 창이2 2022. 8. 14.

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()
}

 

참고 : 자바언어로 배우는 디자인패턴 입문

댓글