싱글톤 패턴(Singleton Pattern)은 한 클래스에 오직 하나의 인스턴스만 존재하도록 보장하고, 어디서든지 이 인스턴스에 전역적으로 접근할 수 있게 하는 디자인 패턴입니다. 주로 애플리케이션 전반에서 공유되는 전역 상태 관리나 리소스 관리에 사용됩니다.
싱글톤 패턴 (Singleton Pattern)
class Singleton
{
private:
static Singleton* Instance;
// 생성자를 private으로 선언하여 외부에서 인스턴스를 생성할 수 없도록 합니다.
Singleton() {}
public:
// 인스턴스를 반환하는 정적 메서드
static Singleton* GetInstance()
{
if (Instance == nullptr)
{
Instance = new Singleton();
}
return Instance;
}
// 예시 메서드
void DoSomething() {}
};
// 정적 변수 초기화
Singleton* Singleton::Instance = nullptr;
팩토리 패턴은 객체 생성을 캡슐화하는 디자인 패턴입니다. 클래스의 인스턴스를 직접 생성하지 않고, 팩토리 메서드를 통해 필요한 객체를 생성하여 반환합니다. 객체의 생성 로직을 중앙에서 관리할 수 있어 유연성이 높습니다.
팩토리 패턴 (Factory Pattern)
class Product
{
public:
virtual void Use() = 0;
};
class ConcreteProductA : public Product
{
public:
void Use() override { /* A 타입 제품 사용 */ }
};
class ConcreteProductB : public Product
{
public:
void Use() override { /* B 타입 제품 사용 */ }
};
class ProductFactory
{
public:
static Product* CreateProduct(const std::string& Type)
{
if (Type == "A")
return new ConcreteProductA();
else if (Type == "B")
return new ConcreteProductB();
return nullptr;
}
};