루리코딩 세상

Factory 본문

이론/C++

Factory

루리딩 2025. 5. 14. 20:25

C++에서 "Factory"객체를 생성하는 디자인 패턴일종입니다. 특히 어떤 클래스를 생성해야 할지 프로그램 실행 중에 결정해야 유용하게 사용됩니다.


🏭 Factory 패턴이란?

**Factory Pattern(팩토리 패턴)**객체 생성 코드를 별도의 클래스로 분리하여,
객체를 직접 생성하지 않고 팩토리에서 생성하도록 하는 생성(Creational) 디자인 패턴입니다.


사용하나요?

문제해결
객체 생성 코드가 중복됨 생성 로직을 곳에 모아둠
코드가 특정 클래스에 종속됨 의존성을 낮추고, 유연한 구조 설계
런타임 어떤 객체를 만들지 결정해야 조건에 따라 다른 객체 반환 가능
// 1. 제품 인터페이스
class Product { public: virtual void use() = 0;
virtual ~Product() {} };

// 2. 구체 클래스
class ConcreteProductA : public Product
{ public: void use() override { std::cout << "Product A 사용\n"; } };
class ConcreteProductB : public Product
{ public: void use() override { std::cout << "Product B 사용\n"; } };

// 3. 팩토리 클래스 class ProductFactory
{ public: static Product* createProduct(const std::string& type)
{ if (type == "A") return new ConcreteProductA();
if (type == "B") return new ConcreteProductB();
return nullptr;
}
};
int main()
{Product* p = ProductFactory::createProduct("A");
if (p) { p->use(); delete p; }
}

장점과 단점

장점단점
객체 생성 분리 → 유지보수 쉬움 클래스가 많아질 있음
코드 재사용성 ↑ 단순한 경우 오히려 복잡해질 있음
의존성 감소 (인터페이스 기반 설계)  

관련 확장 패턴

패턴 이름설명
Simple Factory 가장 기본적인 형태
Factory Method 추상 팩토리에서 서브클래스가 생성 로직 결정
Abstract Factory 관련된 객체들을 그룹으로 생성 (ex. UI 테마별 위젯 생성 등)

요약 한줄 정리

"Factory 패턴은 객체 생성의 책임을 외부 팩토리 클래스에 위임하여, 유연하고 확장 가능한 코드 구조만드는 방법입니다."