Writing /volume1/Web/Public/dokuwiki/data/log/deprecated/2024-11-15.log failed
文書の過去の版を表示しています。
Writing /volume1/Web/Public/dokuwiki/data/log/deprecated/2024-11-15.log failed
the Definition of Template Method Pattern
템플릿 메소드 패턴의 정의는 다음과 같습니다.
템플릿 메소드 패턴에서는 메소드에서 알고리즘의 골격을 정의합니다. 알고리즘의 여러 단계 중 일부는 서브클래스에서 구현할 수 있습니다. 템플릿 메소드를 이용하면 알고리즘의 구조는 구대로 유지하면서 서브 클래스에서 특정단계를 재정의할 수 있습니다.
이 패턴은 간단하게 말하자면 알고리즘의 틀을 만들기 위한 것입니다. 틀(템플릿)이란 무엇을 뜻할까요?
그냥 메소드에 불과합니다. 조금 더 구체적으로 얘기하자면, 일련의 단계들로 알고리즘을 정의한 메소드입니다.
여러 단계 가운데 하나 이상이 추상 메소드로 정의되며, 그 추상 메소드는 서브클래스에서 구현됩니다.
이렇게 하면 서브클래스에서 일부분을 구현할 수 있도록 하면서도 알고리즘의 구조는 바꾸지 않아도 되도록 할 수 있습니다.
클래스 다이어그램을 한번 살펴봅시다.
snippet of AbstractClass
이번에는 추상 클래스에 들어갈 수 있는 메소드의 형식에 대해 조금 더 자세하게 살펴봅시다.
abstract class AbstractClass{ final void templateMethod(){ primativeOperation1(); primativeOperation2(); concreteOperation(); } abstract void primitiveOperation1(); abstract void primitiveOperation2(); final void concreteOperation(){ //concreteOperation() 코드 } void hook() {} }