1. 개요
Factory 패턴은 객체 생성 로직을 별도의 클래스나 메서드로 분리하여, 객체 생성 과정을 더 유연하고 확장 가능하게 만드는 디자인 패턴입니다. ✨ 이 패턴은 객체 생성에 따른 의존성을 줄이고, 코드의 유지보수성을 높이는 데 매우 유용합니다.
언제 사용할까?
- 클래스 생성 로직이 복잡할 때
- 유사한 객체가 여러 종류일 때
- 객체의 생성 방식이 변경될 가능성이 있을 때
2. 개념
Factory 패턴은 팩토리 메서드(Factory Method)를 통해 객체를 생성합니다. 객체 생성 과정을 캡슐화함으로써, 클라이언트가 생성된 객체의 내부 구조를 알 필요가 없게 만듭니다.
핵심 구성 요소
- Creator: 객체를 생성하는 역할을 담당 (보통 추상 클래스 또는 인터페이스)
- ConcreteCreator: 객체 생성 로직을 구체적으로 구현하는 클래스
- Product: 생성되는 객체의 인터페이스
- ConcreteProduct: 실제 생성된 객체
3. 예제
아래는 C#으로 간단히 구현한 예제입니다. 🎉
문제: 여러 종류의 피자를 만드는 애플리케이션
// Product
public interface IPizza
{
void Prepare();
}
// ConcreteProduct
public class MargheritaPizza : IPizza
{
public void Prepare()
{
Console.WriteLine("Preparing Margherita Pizza! 🍕");
}
}
public class PepperoniPizza : IPizza
{
public void Prepare()
{
Console.WriteLine("Preparing Pepperoni Pizza! 🍕");
}
}
// Creator
public abstract class PizzaFactory
{
public abstract IPizza CreatePizza();
}
// ConcreteCreator
public class MargheritaPizzaFactory : PizzaFactory
{
public override IPizza CreatePizza()
{
return new MargheritaPizza();
}
}
public class PepperoniPizzaFactory : PizzaFactory
{
public override IPizza CreatePizza()
{
return new PepperoniPizza();
}
}
// Client
class Program
{
static void Main(string[] args)
{
PizzaFactory factory = new MargheritaPizzaFactory();
IPizza pizza = factory.CreatePizza();
pizza.Prepare();
factory = new PepperoniPizzaFactory();
pizza = factory.CreatePizza();
pizza.Prepare();
}
}
결과
Preparing Margherita Pizza! 🍕
Preparing Pepperoni Pizza! 🍕
4. 주의점
- 추가적인 클래스 증가: Factory 패턴을 사용하면 클래스가 증가할 수 있으므로, 간단한 프로젝트에서는 오히려 복잡도를 높일 수 있습니다.
- 추상화와 유연성: 객체 생성 로직이 복잡하거나 변동이 잦지 않다면 굳이 Factory 패턴을 사용하지 않아도 됩니다. 🚧
5. 결론
Factory 패턴은 객체 생성의 책임을 분리함으로써, 코드의 유연성과 재사용성을 높이는 강력한 도구입니다. ✨ 하지만 필요 이상으로 사용하면 코드가 과도하게 복잡해질 수 있으니, 상황에 맞게 적용하는 것이 중요합니다.
6. 관련 링크
Factory method pattern - Wikipedia
From Wikipedia, the free encyclopedia Object-oriented software design pattern In object-oriented programming, the factory method pattern is a design pattern that uses factory methods to deal with the problem of creating objects without having to specify th
en.wikipedia.org
다이어그램
반응형
'Workspace > Design Pattern' 카테고리의 다른 글
어댑터 패턴 (Adapter Pattern): 호환되지 않는 인터페이스 연결하기 (0) | 2025.01.22 |
---|---|
데코레이터 패턴 (Decorator Pattern): 유연한 기능 확장의 비밀 (0) | 2025.01.22 |
옵저버 패턴 (Observer Pattern): 알림을 관리하는 효율적인 방법 (0) | 2025.01.22 |
전략 패턴 (Strategy Pattern): 유연한 알고리즘 선택의 열쇠 (0) | 2025.01.22 |
싱글톤 패턴 (Singleton Pattern) (0) | 2025.01.22 |