반응형

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

[C#] 3. 팩토리 메서드 패턴(Factory Method Pattern) - 개요, 시나리오

3. 팩토리 메서드 패턴(Factory Method Pattern) 3.1 개요 프로그래밍하다 보면 같은 방법으로 사용할 수 있는 여러 종류의 개체를 일반화하여 기반 클래스를 정의하고 이를 기반으로 파생 클래스로 정의하는 것은 매우 흔합니다. 이 경우에 사용하는 곳에서 구체적으로 어떠한 개체를 생성해서 사용할 지에 대하여 개발 초기 단계에서 결정할 수 없다면 어떻게 하면 좋을까요? 팩토리 메서드 패턴을 이용하면 이러한 고민을 해결할 수 있습니다. 추상 팩토리 클래스에서는 사용할 개체(추상 클래스)를 생성하는 것에 대해 약속만 합니다. 대신 파생 팩토리 클래스에서 구체적으로 어떠한 개체를 생성할 것인지 구현합니다. 이처럼 구체적인 개체를 생성하는 부분을 분리하면 추상 팩토리 클래스에서는 어떠한 개체를 생성..

[C#] 2. 빌더 패턴(Builder Pattern) - 구현

2. 빌더 패턴(Builder Pattern) 2. 4 구현 이제 빌더 패턴에 대한 예제 프로그램을 구현해 봅시다. 구현 순서는 사진, 사진 빌더, 카메라 순으로 하겠습니다. 2.4.1 사진 사진은 피사체와 이에 대한 이미지를 갖는 형식으로 정의를 할께요. ▶Picture.cs namespace Builder { abstract class PictureBuilder { public Picture Picture { get; protected set; } public abstract void SetSubject(string subject); //상을 맺히는 기능 public abstract void Change();//이미지를 수정하는 기능 } } SmoothBuilder에서는 약속한 기능을 구체적으로 구현..

[C#] 2. 빌더 패턴(Builder Pattern) - 설계

2. 빌더 패턴(Builder Pattern) 2. 3 디자인 이번에는 카메라와 사진, 사진 빌더로 빌더 패턴에 대한 예를 들려고 합니다. 카메라는 사진을 찍는 기능이 있고 효과를 줄 수 있게 하려고 합니다. 대신 효과를 주는 부분을 사진 빌더를 통해 수행하게 할 것입니다. 카메라는 디렉터 역할을 하며 Camera 이름의 클래스로 구현하겠습니다. 사진은 카메라를 통해 사용자가 얻고자 하는 개체로 Picture라고 정하겠습니다. 사진 빌더는 빛을 모아서 피사체를 상으로 맺히는 기능과 이미지를 수정하는 기능이 있게 합시다. 그리고 이러한 기능을 약속한 추상 클래스 PictureBuilder를 정의할게요. 빌더의 종류에는 낮에 사용하는 SmoothBuilder와 밤에 사용하는 REPreventBuilder를 ..

[C#] 2. 빌더 패턴(Builder Pattern) - 개요, 시나리오

2. 빌더 패턴(Builder Pattern) 2.1 개요 프로그래밍하다 보면 여러 요소로 구성되는 개체가 있습니다. 그리고 이와 같은 개체를 생성하는 방법이 목적에 따라 다양한 경우가 생깁니다. 이 경우에 빌더 패턴은 목적에 따른 개체를 생성하는 과정에 대한 약속과 각 과정에서 수행할 구체적인 알고리즘을 분리하여 개체를 생성하는 패턴입니다. 빌더 패턴에서 빌더는 추상 클래스로 개체를 생성하는 과정들을 약속합니다. 빌더를 기반으로 파생한 클래스에서는 생성 과정들에 대해 구체적으로 구현합니다. 이처럼 정의하면 빌더를 사용하는 곳에서는 서로 다른 구조를 갖는 개체를 같은 방법으로 생성할 수 있습니다. 2. 2 시나리오 우리 가족은 매주 토요일에는 여행을 갑니다. 여러분도 아시다시피 우리 가족은 사진을 찍는 ..

[C#] 1. 추상 팩토리 패턴 (Abstract Factory Pattern) - 구현

1. 추상 팩토리 패턴 (Abstract Factory Pattern) 1. 4 구현 이제 구체적으로 구현해 봅시다. 먼저, 카메라와 렌즈를 구현하고 팩토리 부분을 구현한 후에 마지막으로 테스터를 구현합시다. 1.4.1 렌즈 렌즈의 기능은 ITake 인터페이스로 정의하고 상을 맺히는 기능을 약속합시다. EvLens와 HoLens는 ITake를 기반으로 상을 맺히는 기능을 구체적으로 구현합시다. 이처럼 인터페이스를 정의하고 이를 기반으로 구현하면 표준화된 인터페이스를 사용할 수 있어서 사용방법을 익히는 비용을 줄일 수 있습니다. ▶ITake.cs using System; namespace AbstractFactory { class EvLens:ITake { public void Take() //ITake에..

[C#] 1. 추상 팩토리 패턴 (Abstract Factory Pattern) - 설계(Design)

1. 추상 팩토리 패턴 (Abstract Factory Pattern) 1. 3 디자인 여기에서는 렌즈의 종류는 기종별로 하나의 렌즈만 제공하는 수준으로 디자인하려고 합니다. 여기에서 보여 드리고자 하는 프로그램에는 카메라, 렌즈, 특정 기종의 카메라와 렌즈를 생성하는 역할을 하는 팩토리, 테스터로 분류할 것입니다. 카메라와 렌즈, 팩토리는 Everyday에 관련된 것과 Holiday에 관련된 구체화 클래스와 일반화된 추상 클래스 구조로 만들어야겠지요. 여기에서 Everyday에 관련된 것들은 접두사 Ev를 사용하고 Holiday에 관련된 것들은 접두사 Ho를 사용할 것입니다. 카메라에는 렌즈를 장착 및 탈착하는 기능과 사진을 찍는 기능에 대해 약속합시다. 렌즈에는 상을 얻어오는 기능을 약속하겠습니다. ..

[C#] 1. 추상 팩토리 패턴 (Abstract Factory Pattern) - 개요, 시나리오

1. 추상 팩토리 패턴 (Abstract Factory Pattern) 1.1 개요 프로그래밍하다 보면 특정 목적에 따라 사용해야 하는 개체들이 서로 호환성이 있어야 하는 경우가 발생합니다. 목적에 따라 사용해야 하는 개체군들이 있을 때 특정 목적에 맞게 호환성 있는 개체가 무엇인지 조사하고 사용하기 위해서 비용이 발생할 수 있습니다. 이럴 때 추상 팩토리 패턴을 사용하면 효과적으로 비용을 줄일 수 있을 것입니다. 특히, 비슷한 작업을 위해 필요한 개체들 사이에 호환성을 유지해야 하는 여러 종류의 개체군이 있을 때 추상 팩토리 패턴을 사용하면 표준화된 방식에 의해 자신에게 맞는 개체군을 효과적으로 사용할 수 있게 해 줍니다. 이를 위해 추상 팩토리 패턴에서는 서로 호환성 있는 개체들을 생성하는 부분만 담..

[C#] 생성 패턴 개요 (추상 팩토리 패턴, 빌더 패턴, 팩토리 메서드 패턴, 원형 패턴, 단일체 패턴)

1부 생성 패턴들 1. 추상 팩토리 패턴(Abstract Factory Pattern) 호환성 있는 개체군을 하나의 팩토리 개체를 통해 생성하게 함으로써 사용자 편의성을 증대시킬 수 있다. 2016/04/25 - [프로그래밍 기술/Escort GoF의 디자인 패턴 C#] - [C#] 1. 추상 팩토리 패턴 (Abstract Factory Pattern) - 개요, 시나리오2. 빌더 패턴(Builder Pattern) 개체를 생성하는 과정이 복잡하면 생성하는 알고리즘을 빌더에 구현하여 빌더 개체를 통해 복잡한 개체 생성을 쉽게 사용할 수 있다. 2016/04/25 - [프로그래밍 기술/Escort GoF의 디자인 패턴 C#] - [C#] 2. 빌더 패턴(Builder Pattern) - 개요, 시나리오 3..

[소프트웨어 패턴 C#] 25. 방문자 패턴(Visitor Pattern)

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

[소프트웨어 패턴 C#] 24. 템플릿 메서드 패턴(Template Method Pattern)

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

반응형