템플릿 메소드 패턴 Design Pattern&UML2016. 8. 24. 03:27
템플릿 메소드 패턴이 뭐냐면...
쉽게 이해하기 위해 예를 들어보자.
청소를 한다고 치자.
쓸기, 걸레빨기, 닦기 세가지 작업을 마무리하면 청소가 끝난다.
그럼 청소라는 메소드를 정의해 보자.
void cleaning(){
쓸기();
걸레빨기();
닦기();
}
cleaning메소드는 세가지 메소드를 호출하는 일을 한다.
쓸기, 걸레빨기, 닦기는 사람마다 수행하는 방법이 다 다를 것이다.
예를 들면 걸레를 빠는데 손으로 빠는 사람도 있을테고,
세탁기에 넣고 돌리는 사람도 있을거다.
템플릿 메소드 패턴은 이런 상황을 쉽게 정의할 수 있도록 해준다.
슈퍼클래스에서는 cleaning 메소드에서 쓸기, 걸레빨기, 닦기를 호출한다고 정의해두고
쓸기, 걸레빨기, 닦기는 추상함수로 두거나 일반메소드를 오버라이딩 할 수 있도록 해준다.
서브클래스에서는 이제 쓸기, 걸레빨기, 닦기를 구체적으로 어떻게 할지를 써넣으면 되는 것이다.
코드를 대충 보자.
abstract class CleanRoom{
void cleaning(){
쓸기();
걸레빨기();
닦기();
}
void 쓸기(){};
void 걸레빨기(){};
void 닦기(){};
}
class CleanMyRoom extends CleanRoom{
void 쓸기(){
대빗자루와 쓰레받기를 지하 창고에서 꺼내와서 20분동안 쓴다;
}
void 걸레빨기(){
세탁기에 걸레 10개와 세제 3스푼을 넣고 돌린다;
}
void 닦기(){
초당 3회 왕복의 속도로 책상, 책꽂이, 바닥의 순으로 닦는다;
}
}
즉, 해야할 일들의 일련의 과정은 슈퍼클래스에서 정해두고, 각 행위를 구체적으로 어떻게 할지는 서브클래스에서 정하는 방식이다.
'Design Pattern&UML' 카테고리의 다른 글
UML 기호 정리 (1) | 2016.12.17 |
---|---|
Use Case는 Delivering 매커니즘과 분리되어야 한다. (0) | 2016.12.17 |
클린코더 영상 보고 공부중 - 디자인 (0) | 2016.12.17 |
디자인 패턴의 5대 원칙 - SOLID (0) | 2016.12.11 |
[UML] 기호 정리 (초안) (0) | 2016.12.04 |