2015년 10월 10일 토요일

3.Template Method 패턴

상위클래스는 처리의 흐름이 정의 되어 있는 추상클래스이고 ,하위 클래스는 사우이클래스를 상속받아 구체적인 처리를 구현한 클래스가 된다.

따라서 상위 클래스는 하위 클래스가 실제적으로 어떤 구체적인 작업을 하는지 모르며, 서로 다른 하위 클래스들은 나름대로의 방식대로 구현하되 처리의 흐름은 상위 클래스에 정의된대로 따르게 된다.

즉, 탬플릿의 주체가 되는 콘트롤러 의 성격을 띄는 상위클래스에서 흐름을 관장하고, 상속받은 실제 하위 클래스에서는 상위클래스에서 정의된 순서와 규정에 맞게 오버라이딩 하고, 추가 기능등을 구현하게 된다.

따라서 일련의 상속받은 하위 클래스들은 모두 상위 클래스의 템플릿구성대로 구현과 실행하게 되는 패턴이다.

구조가 일관적인 형식의 제품이나 기능들을만들때 주로 사용하는 패턴이다.

Abstract  UpperClass {

abstract public function init();
abstract public function run();
abstract public function end();
final function showMain(){
this->init();
this->run();
this->end();

}
protected int sharedVal = 0; //하위 클래스에서 공통으로 공유하는 변수등.

}

추상클래스인 UpperClass 에는 오버라이디이 불가능한 final 인 showMain 에 정의된 초기와->실행->종료 라는 템플릿으로 하위 클래스에서 실행되도록 구현된것이다.

하위 클래스는 추상메쏘드 들을 각 상황에 맞에 오버라이딩 한다음 showMain() 을 실행하여 동일한 실행 프로세스를 가질수 있도록 했다.

 

http://copynull.tistory.com/124

http://egloos.zum.com/iilii/v/3806897

http://secretroute.tistory.com/entry/Head-First-Design-Patterns-%EC%A0%9C8%EC%9E%A5-Template-Method-%ED%8C%A8%ED%84%B4

http://blog.jdm.kr/116

http://skmagic.tistory.com/entry/Template-Method-Pattern-Class-%EC%A0%95%EB%A6%AC%EB%B3%B8

http://darkneo.tistory.com/7

0 comments:

댓글 쓰기