>백엔드 개발 >C++ >C++ 함수 오버로딩 및 재작성에 싱글톤 모드와 팩토리 모드 적용

C++ 함수 오버로딩 및 재작성에 싱글톤 모드와 팩토리 모드 적용

PHPz
PHPz원래의
2024-04-19 17:06:01928검색

싱글턴 모드: 함수 오버로딩을 통해 다양한 매개변수를 갖는 싱글턴 인스턴스를 제공합니다. 팩토리 패턴: 기능 재작성을 통해 다양한 유형의 객체를 생성하여 특정 제품 클래스에서 생성 프로세스를 분리합니다. C++에서 함수 오버로드 및 다시 작성 시 싱글톤 모드 및 팩토리 모드 적용 로드된 함수는 다른 매개변수 목록을 가지므로 다른 인스턴스를 반환합니다.

class Singleton {
public:
    static Singleton* getInstance() {
        if (instance_ == nullptr) {
            instance_ = new Singleton();
        }
        return instance_;
    }

    static Singleton* getInstance(int arg) {
        if (instance_ == nullptr) {
            instance_ = new Singleton(arg);
        }
        return instance_;
    }

private:
    Singleton() = default;
    Singleton(int arg);
    static Singleton* instance_;
};

C++ 函数重载和重写中单例模式与工厂模式的运用실용 사례

두 개의 싱글톤 개체를 만듭니다. 하나는 매개 변수가 있고 다른 하나는 매개 변수가 없습니다.

int main() {
    Singleton* instance1 = Singleton::getInstance();
    Singleton* instance2 = Singleton::getInstance(10);

    // 检查两个实例是否相同
    if (instance1 == instance2) {
        std::cout << "两个实例相同" << std::endl;
    } else {
        std::cout << "两个实例不相同" << std::endl;
    }
}

Factory Pattern

Function Overriding

Factory 패턴은 함수 재작성을 통해 구현할 수 있습니다. 다시 작성된 함수는 하위 클래스에서 서로 다른 구현을 가지므로 서로 다른 객체를 생성합니다.

class Product {
public:
    virtual ~Product() {}
};

class ConcreteProductA : public Product {
    // ...
};

class ConcreteProductB : public Product {
    // ...
};

class Factory {
public:
    virtual ~Factory() {}
    virtual Product* createProduct() = 0;
};

class ConcreteFactoryA : public Factory {
public:
    Product* createProduct() override {
        return new ConcreteProductA();
    }
};

class ConcreteFactoryB : public Factory {
public:
    Product* createProduct() override {
        return new ConcreteProductB();
    }
};

실용 사례

두 개의 팩토리 개체를 만들고, 각 개체는 서로 다른 제품 유형을 만듭니다.

아아아아

위 내용은 C++ 함수 오버로딩 및 재작성에 싱글톤 모드와 팩토리 모드 적용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.