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
- 자료구조
- 각도변환
- 프로그래밍
- 언리얼엔진5
- 언리얼엔진공부
- 자료형타입
- 25.06.11dir
- 언리얼엔진
- c++용어정리
- c++
- 자료구조정리
- DX
- ipc(inter process communication)
- 언리얼비헤이어비어트리
- unrealengineai
- c++class
- uaiperception
- 게임엔진튜토리얼
- bttask
- 게임개발
- directx
- livrary
- 언리얼ai
- 월드아웃라이너
- 영단어정리
- 수학용어정리
- c++porinter
- 프로그래밍일기
- c언어정리
- leveleditor
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 |