[설계 패턴 C#]
24. 템플릿 메서드 패턴(Template Method Pattern)
"본문 내용"
[Escort GoF의 디자인 패턴 C#] 24. 템플릿 메서드 패턴(Template Method Pattern)
[Escort GoF의 디자인 패턴 C#] 24. 템플릿 메서드 패턴(Template Method Pattern) 설계
[Escort GoF의 디자인 패턴 C#] 24. 템플릿 메서드 패턴(Template Method Pattern) 구현
▶ EHApp.cs
using System;
namespace TemplateMethod
{
class EHApp
{
public void Do()
{
InitInstance();
Run();
ExitInstance();
}
protected void Run()
{
ConsoleKey key = ConsoleKey.Escape;
while((key = SelectMenu())!=ConsoleKey.Escape)
{
switch(key)
{
case ConsoleKey.F1: About(); break;
default: KeyProc(key); break;
}
Console.WriteLine("아무키나 누르세요");
Console.ReadKey();
}
}
protected virtual void InitInstance(){ }
protected virtual void ExitInstance(){ }
protected virtual void About()
{
Console.WriteLine("EH Camera");
}
protected virtual void ViewMenu()
{
Console.WriteLine("ESC:프로그램 종료 F1:제품 정보");
}
protected virtual void KeyProc(ConsoleKey key)
{
Console.WriteLine("잘못된 메뉴를 선택하였습니다.");
}
private ConsoleKey SelectMenu()
{
ViewMenu();
Console.WriteLine("메뉴를 선택하세요.");
return Console.ReadKey().Key;
}
}
}
▶ MyApp.cs
using System;
namespace TemplateMethod
{
class MyApp:EHApp
{
protected override void InitInstance()
{
Console.WriteLine("사진 관리자 프로그램 V0.1");
Console.WriteLine("아무키나 누르세요.");
}
protected override void ExitInstance()
{
Console.WriteLine("사진 관리자 프로그램을 종료합니다.");
}
protected override void About()
{
base.About();
Console.WriteLine("응용 개발팀 2012. 5. 30");
}
protected override void ViewMenu()
{
base.ViewMenu();
Console.WriteLine("F2: 사진 추가 F3: 사진 검색");
}
protected override void KeyProc(ConsoleKey key)
{
switch(key)
{
case ConsoleKey.F2: AddPicture(); return;
case ConsoleKey.F3: SearchPicture(); return;
}
base.KeyProc(key);
}
void AddPicture()
{
Console.WriteLine("사진 추가 기능을 선택하였습니다.");
}
void SearchPicture()
{
Console.WriteLine("사진 검색 기능을 선택하였습니다.");
}
}
}
▶ Program.cs
namespace TemplateMethod
{
class Program
{
static void Main(string[] args)
{
MyApp app = new MyApp();
app.Do();
}
}
}
'.NET > 설계 패턴(C#)' 카테고리의 다른 글
[설계 패턴 C#] 25. 방문자 패턴(Visitor Pattern) (0) | 2016.12.09 |
---|---|
[설계 패턴 C#] 23. 전략 패턴(Strategy Pattern) (0) | 2016.12.09 |
[설계 패턴 C#] 22. 상태 패턴(State Pattern) (0) | 2016.12.09 |
[설계 패턴 C#] 21. 감시자 패턴(Observer Pattern) (0) | 2016.12.09 |
[설계 패턴 C#] 20. 메멘토 패턴(Memento Pattern) (0) | 2016.12.08 |