3. 팩토리 메서드 패턴(Factory Method Pattern)
프로그래밍하다 보면 같은 방법으로 사용할 수 있는 여러 종류의 개체를 일반화하여 기반 클래스를 정의하고 이를 기반으로 파생 클래스로 정의하는 것은 매우 흔합니다. 이 경우에 사용하는 곳에서 구체적으로 어떠한 개체를 생성해서 사용할 지에 대하여 개발 초기 단계에서 결정할 수 없다면 어떻게 하면 좋을까요? 팩토리 메서드 패턴을 이용하면 이러한 고민을 해결할 수 있습니다.
추상 팩토리 클래스에서는 사용할 개체(추상 클래스)를 생성하는 것에 대해 약속만 합니다. 대신 파생 팩토리 클래스에서 구체적으로 어떠한 개체를 생성할 것인지 구현합니다. 이처럼 구체적인 개체를 생성하는 부분을 분리하면 추상 팩토리 클래스에서는 어떠한 개체를 생성할 것인지에 대한 고민은 뒤로 미루고 개체를 사용하는 부분을 구현할 수 있습니다. 팩토리 메서드란 추상 팩토리 클래스에 약속된 개체를 생성하는 메서드입니다.
팩토리 메서드 패턴은 자주 사용하게 되는 프로그램의 뼈대를 만들 때 사용되기도 합니다. 예를 들어 프로그램의 주요 뼈대로 응용 클래스와 사용자와 상호작용하는 뷰 클래스를 기본적으로 제공한다고 가정합시다. 응용 클래스에서는 초기에 메인 뷰 개체를 생성하고 실행에서는 메인 뷰 개체를 활성화하고 해제화를 통해 뷰 개체를 소멸하게 만들어 봅시다. 이 경우에 추상 응용 클래스에는 추상 뷰 개체를 생성하는 메서드를 약속합니다. 추상 응용 클래스의 초기화에서는 추상 뷰 개체를 생성하는 메서드를 이용하여 개체를 생성합니다. 그리고 다른 메서드에서는 해당 뷰 개체를 사용합니다. 이처럼 뼈대를 구성하면 실제 프로그램을 작성할 때에는 추상 응용 클래스에서 파생된 응용 클래스에서 자신에 맞는 뷰 개체를 생성하는 메서드를 구현하는 것으로 기본적인 코드는 완성되게 됩니다.
행위 패턴중에 템플릿 메서드 패턴과 팩토리 메서드 패턴을 함께 사용하면 좀 더 효과적으로 프로그램의 뼈대를 정의할 수 있습니다.
2016/04/25 - [프로그래밍 기술/Escort GoF의 디자인 패턴 C#] - [C#] 3. 팩토리 메서드 패턴(Factory Method Pattern) - 구현
'프로그래밍 기술 > Escort GoF의 디자인 패턴 C#' 카테고리의 다른 글
[소프트웨어 설계 패턴 C#] 11. 플라이급 패턴(Flyweight Pattern) (0) | 2016.04.17 |
---|---|
[C#] 퍼사드 패턴(Facade Pattern) (0) | 2016.04.07 |
[C#] 장식자 패턴(Decorator Pattern) (0) | 2016.04.07 |
[C#] 복합체 패턴(Composite Pattern) (0) | 2016.04.07 |
[C#] 가교 패턴(Bridge Pattern) (0) | 2016.04.07 |
[C#] 적응자 패턴(Adapter Pattern) (0) | 2016.04.07 |
[C#] 단일체 패턴(Singleton Pattern) (0) | 2016.04.07 |
[C#] 원형 패턴(Prototype Pattern) (0) | 2016.04.06 |
[C#] 빌더 패턴(Builder Pattern) (0) | 2016.04.06 |
[C#] 추상 팩토리 패턴 (Abstract Factory Pattern) (0) | 2016.04.06 |