반응형

프로그래밍 기술/Escort GoF의 디자인 패턴 C# 103

[C#] 방문자 패턴(Visitor Pattern) - 구현

25. 방문자 패턴(Visitor Pattern) [그림] 방문자 패턴(Visitor Pattern) 클래스 다이어그램 25.4 구현 반복자 패턴에 대한 예제 프로그램을 구현하는 순서는 Element 군, Visitor 군, MyTour와 데모 코드 순으로 하겠습니다. 25.4.1 Element 군 MyTour는 사진과 일기를 통합 관리하는 컬렉션 입니다. 사진과 일기와 같이 MyTour에서 관리 가능한 요소에 대한 기반 클래스를 Element라 정하고 사진을 Picture, 일기를 Diary라 정하겠습니다. 방문자 패턴에서는 요소에 따라 다르게 처리해야 할 기능들을 구체화 된 방문자 형식을 정의를 하고 실제 요소 형식에서는 단순히 방문자를 수용하는 메서드만 정의를 합니다. 즉, 실질적인 구현은 각 요소..

[C#] 방문자 패턴(Visitor Pattern) - 설계(Design)

25. 방문자 패턴(Visitor Pattern) 25. 3 디자인 반복자 패턴에 대한 설명을 위한 예제로는 여행에 대한 일기 형식의 기록과 사진을 통합 관리하는 응용을 가지고 보여 드릴께요.. 응용에는 여행에서의 사진과 일기를 보관하는 컬렉션을 두려고 합니다. 일단, 사진과 일기는 해당 컬렉션에 같이 보관할 수 있게 하기 위해 기반 클래스를 만들어야 겠지요. 그리고, 해당 컬렉션에 특정 명령을 내렸을 때 사진이나 일기에 따라 구체적 행위가 다르게 적용해야 하는 기능들을 추상화 하여 방문자를 정의할 것입니다. 그리고, 사진과 일기의 기반 클래스에서는 방문자를 수용할 수 있게 하고 방문자에서 자신을 처리할 수 있는 메서드를 호출하게 할께요. 대신 방문자에서는 일기와 사진과 같은 요소 형식들에 따라 처리하는..

[C#] 방문자 패턴(Visitor Pattern) - 개요, 시나리오

25. 방문자 패턴(Visitor Pattern) 25.1 개요 프로그래밍을 하다 보면 여러 구성 요소들로 구성된 개체를 정의해야 하는 경우는 매우 흔한 일입니다. 그리고, 특정 명령을 수행함에 있어 내부 구성 요소 개체들의 형식에 따라 적용해야 할 구체적 행위가 다른 경우가 있을 것입니다. 이와 같은 경우에 방문자 패턴을 사용하면 개체들의 형식에 따라 적용해야 할 구체적 행위를 분리하여 정의할 수 있습니다. 이는 새로운 행위를 정의할 필요가 생길 경우에도 구성 요소 형식을 변경하지 않으면서 추가할 수 있게 됩니다. 방문자 패턴에서는 개체를 구성하는 여러 요소 개체들에게 요소의 형식에 따라 수행할 구체적 작업을 방문자에 정의하게 됩니다. 대신 요소의 형식에서는 방문자를 수용하는 메서드를 제공을 하고 방문..

[C#] 템플릿 메서드 패턴(Template Method Pattern) - 구현

24. 템플릿 메서드 패턴(Template Method Pattern) [그림] 템플릿 메서드 패턴(Template Method Pattern) 클래스 다이어그램 24.4 구현 템플릿 메서드 패턴에 대한 예제 프로그램을 구현하는 순서는 EHApp, MyApp 순으로 하겠습니다. 24.4.1 EHApp EHApp 클래스에서 사용자에 노출할 메서드는 Do 메서드 하나입니다. 그리고, Do 메서드에서 수행할 작업 절차는 초기화, 사용자와 상호 작용, 해제화를 하는 것으로 정하였습니다. public void Do(){ InitInstance(); Run(); ExitInstance();} 그리고, 초기화와 해제화의 경우는 실제 작성할 응용의 목적에 따라 재 정의를 할 수 있어야 겠지요. protected vir..

[C#] 템플릿 메서드 패턴(Template Method Pattern) -설계(Design)

24. 템플릿 메서드 패턴(Template Method Pattern) 24. 3 디자인 템플릿 메서드에 대한 설명을 위한 예제로는 프레임 워크를 기반으로 구체화 된 응용을 보여드리겠습니다. 프레임 워크에 해당하는 클래스 이름은 EHApp 라 정하였고 사용자에게 노출하는 메서드로는 Do가 있습니다. EHApp 클래스의 Do 메서드에서는 응용에서 필요한 초기화 작업을 하는 InitInstance를 수행한 후에 사용자와 상호 작용을 수행하는 Run을 수행하고 응용을 종료할 때 해야 할 해제화 작업을 하는 ExitInstance를 하도록 정의하였습니다. 물론, EHApp를 기반으로 파생한 MyApp에서는 목적에 맞게 초기화 작업과 해제화 작업에 대한 재 정의를 할 수 있어야겠죠. 그리고, Run 메서드에서는 ..

[C#] 템플릿 메서드 패턴(Template Method Pattern) - 개요, 시나리오

24. 템플릿 메서드 패턴(Template Method Pattern) 24.1 개요 템플릿 메서드 패턴은 단계별로 수행하는 행위에 대한 약속을 기반 클래스에서 정의를 하고 각 단계별로 수행하는 구체적 구현은 파생 클래스에서 재 정의하는 형태의 패턴입니다. 비슷한 형태의 프로그램 구현에 필요한 뼈대를 일반화하여 제공을 하는 것은 실무에서 자주 사용하는 기법입니다. 일반화 과정을 통해 작성된 뼈대가 마련이 되어 있다면 실제 프로그래밍을 할 때에는 이를 기반으로 세부적인 기능에 대한 재 정의를 통해 효과적인 프로그래밍을 할 수 있습니다. 그리고, 설계 단계에서 프로그램 뼈대를 고민하는 비용을 줄일 수 있게 되고 기술 노하우를 결집 시킬 수 있게 해 줍니다. 이를 위해서 템플릿 메서드 패턴에서는 특정 연산을 ..

[C#] 전략 패턴(Strategy Pattern) - 구현

23. 전략 패턴(Strategy Pattern) [그림] 전략 패턴(Strategy Pattern) 클래스 다이어그램 23.4 구현 전략 패턴에 대한 예제 프로그램을 구현하는 순서는 Picture, Viewer 군, PictureCollection과 데모 코드 순으로 하겠습니다. 23.4.1 Picture Picture는 단순히 사진 이름과 색조, 명도, 채도를 멤버로 갖는 클래스로 정의할께요. 전략 패턴을 설명하기 위한 시나리오에 의해 필요한 것이지 직접적으로 전략 패턴과 관련 있는 클래스는 아닙니다. Viewer.cs namespace Strategy { interface IView { void View(Picture picture); } } SimpleViewer.cs using System; n..

[C#] 전략 패턴(Strategy Pattern) - 설계(Design)

23. 전략 패턴(Strategy Pattern) 23. 3 디자인 전략 패턴에 대한 설명을 위한 예제로 사용할 프로그램은 사진 파일을 관리하는 컬렉션에서 다양한 형태로 사진 개체의 정보를 보여주는 프로그램으로 하겠습니다. 사진의 정보를 보여주는 방법에는 자세히 보기와 간략 보기를 제공할 것입니다. 사용자는 사진을 보관하는 컬렉션의 보기 모드를 설정을 할 수 있고 이에 따라 사진의 정보를 자세하게 보여주거나 간단히 보여줄 수 있어야 합니다. 그리고, 다른 형태로 사진의 정보를 보여주는 알고리즘을 추가 및 변경이 용이해야 합니다. 이를 위해 사진 컬렉션에서 사진의 정보를 보여주는 부분을 별도의 형식으로 정의할 것입니다. 사진의 정보를 보여주는 알고리즘을 인터페이스 IView로 정의하고 사진 개체의 정보를 ..

[C#] 전략 패턴(Strategy Pattern) - 개요, 시나리오

23. 전략 패턴(Strategy Pattern) 23.1 개요 프로그래밍을 하다보면 같은 문제를 해결하는 여러 가지 방법 중에 무엇을 사용하는 것이 효과적인지 고민을 하는 경우가 많습니다. 경우에 따라서는 일단은 효율이 떨어져도 개발 비용이 적게 드는 방법으로 해결을 하고 차후에 개선된 알고리즘을 사용하여 교체를 하는 방법을 사용하기도 합니다. 전략 패턴은 동일한 문제를 해결하기 위한 여러 알고리즘을 일반화하여 사용하는 부분에서 특정 알고리즘에 종속적이지 않고 독립적으로 사용할 수 있게 하는 패턴입니다. 전략 패턴에서는 구체적으로 어떠한 방법으로 문제를 해결해야 할 지를 결정하지 못한 경우에 해당 부분만을 별도의 형식으로 추상화하여 사용함으로써 작업을 분리할 수 있게 해 줍니다. 이를 통해 작업 분배가..

[C#] 상태 패턴(State Pattern) - 구현

22. 상태 패턴(State Pattern) [그림] 상태 패턴(State Pattern) 클래스 다이어그램 22.4 구현 상태 패턴에 대한 예제 프로그램을 구현하는 순서는 Iris와 Shutter, State 군, Camera와 데모 코드 순으로 하겠습니다. 22.4.1 Iris와 Shutter Iris와 Shutter는 단순히 조리개의 F값과 셔터 스피드를 조절하는 역할만 수행합니다. 특별히 상태 패턴과 관련이 있는 형식은 아닙니다. Shutter.cs namespace State { class Shutter { int speed =0; public int Up() { speed++; return speed; } public int Down() { if(speed>0) { speed--; } retu..

반응형