Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- unrealengineai
- 언리얼ai
- c++class
- c++
- c++porinter
- uaiperception
- 언리얼엔진
- c언어정리
- DX
- bttask
- 월드아웃라이너
- 언리얼엔진공부
- 영단어정리
- 언리얼엔진5
- 프로그래밍일기
- 언리얼비헤이어비어트리
- leveleditor
- 게임개발
- livrary
- c++용어정리
- 자료구조
- 자료구조정리
- 프로그래밍
- 게임엔진튜토리얼
- ipc(inter process communication)
- 각도변환
- 수학용어정리
- 25.06.11dir
- directx
- 자료형타입
Archives
- Today
- Total
루리코딩 세상
Factory 본문
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 패턴은 객체 생성의 책임을 외부 팩토리 클래스에 위임하여, 유연하고 확장 가능한 코드 구조를 만드는 방법입니다."
'이론 > C++' 카테고리의 다른 글
| 함수(Parameter)와 인수(Argument)의 차이와 용어 구분 (0) | 2025.05.22 |
|---|---|
| 스택 프레임 (Stack frame) (0) | 2025.05.14 |
| 메모리 영역 : Windows 기준 (0) | 2025.05.12 |
| C++ 동적배열, 정적배열 (0) | 2025.05.12 |
| C++ 스택 오버 플로우 (Stack Overflow) (0) | 2025.05.12 |