https://refactoring.guru/design-patterns/template-method
특정 객체와 그 객체의 메인 로직의 frame이 이미 정해져 있다.
이때 확장을 통해서 해당 구현의 일부/혹은 전체를 변경하고자 할 때 사용.
예시
- document reader : 각 실행 단계가 정해져 있으며 구체화된 객체에서 각기 필요한 추가 기능을 구현한다.
노트
- strategy는 관련 객체의 교체를 통해 로직 변경을 꾀하지만, Template Method는 확장을 통해서 그렇게 한다.
예제 코드
더보기
public abstract class BaseDocReader
{
public virtual void Read()
{
OpenFile();
CheckFormat();
ReadByFormat();
CloseFile();
}
void OpenFile() { }
void CheckFormat() { }
protected abstract void ReadByFormat();
void CloseFile() { }
}
public class MsDocReader : BaseDocReader
{
protected override void ReadByFormat()
{
Console.WriteLine("MsDoc Read");
}
}
public class PdfReader : BaseDocReader
{
protected override void ReadByFormat()
{
Console.WriteLine("Pdf Read");
}
}
internal class TemplateMethodDemo
{
public void Run()
{
BaseDocReader reader = new MsDocReader();
reader.Read();
}
}
'Work & Programming > System Design' 카테고리의 다른 글
[Design] - 고찰. (0) | 2024.05.17 |
---|---|
[Behavioral Pattern] - Visitor (0) | 2024.05.16 |
[Behavioral Pattern] - Strategy (0) | 2024.05.16 |
[Behavioral Pattern] - State (0) | 2024.05.16 |
[Behavioral Pattern] - Observer (0) | 2024.05.16 |