반응형
📌 요약: Abstract Factory 패턴
🏭 추상 팩토리 패턴 (Abstract Factory Pattern)
추상 팩토리 패턴은 관련 있는 객체 집합을 하나의 군으로 묶어, 객체의 구체적인 생성 과정을 감추고 일관된 방식으로 객체를 생성할 수 있게 도와주는 생성 디자인 패턴입니다.
🏗️ 개요
제품군이 여러 종류로 구성되어 있고, 이 제품군을 브랜드(또는 유형)에 따라 통째로 생성해야 할 때 유용합니다.
예를 들어 스포츠카와 제트기, SUV와 헬리콥터를 각각 하나의 제품군으로 보고 브랜드별로 생성하는 구조를 구현할 수 있습니다.
📦 클래스 구성
- Car, Plane: 추상 제품 클래스
- SportCar, SUV: 차량의 구체 클래스
- JetPlane, Helicopter: 비행기의 구체 클래스
- TransportFactory: 추상 팩토리 클래스
- SportsFactory, SUVFactory: 구체 팩토리 클래스
// 추상 팩토리 클래스
class TransportFactory {
public:
virtual Car* createCar() = 0;
virtual Plane* createPlane() = 0;
virtual ~TransportFactory() {}
};
// 스포츠 제품군 생성 팩토리
class SportsFactory : public TransportFactory {
public:
Car* createCar() override { return new SportCar(); }
Plane* createPlane() override { return new JetPlane(); }
};
// SUV 제품군 생성 팩토리
class SUVFactory : public TransportFactory {
public:
Car* createCar() override { return new SUV(); }
Plane* createPlane() override { return new Helicopter(); }
};
🧪 사용 예제
int main() {
TransportFactory* sportsFactory = new SportsFactory();
Car* car1 = sportsFactory->createCar();
Plane* plane1 = sportsFactory->createPlane();
car1->drive();
plane1->fly();
delete car1;
delete plane1;
delete sportsFactory;
TransportFactory* suvFactory = new SUVFactory();
Car* car2 = suvFactory->createCar();
Plane* plane2 = suvFactory->createPlane();
car2->drive();
plane2->fly();
delete car2;
delete plane2;
delete suvFactory;
return 0;
}
▶️ 실행 순서
1. SportsFactory와 SUVFactory 객체를 생성합니다.
2. 각각의 팩토리에서 createCar(), createPlane()을 호출하여 제품군 생성
3. 생성된 차량과 비행기 객체에서 drive(), fly() 메서드 호출
4. 사용이 끝난 객체는 명시적으로 delete로 해제합니다.
반응형
'C++ > 기본' 카테고리의 다른 글
| [C++] 메모리 영역 (1) | 2025.06.08 |
|---|---|
| [C++] 32. Factory Method (0) | 2025.03.29 |
| [C++] 31. Builder (0) | 2025.03.29 |
| [C++] 30. 행동패턴 (0) | 2025.03.29 |
| [C++] 29. 구조패턴 (0) | 2025.03.29 |