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

单例模式:通过函数重载提供不同参数的单例实例。工厂模式:通过函数重写创建不同类型的对象,实现创建过程与具体产品类的解耦。

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

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

单例模式

函数重载

单例模式可以通过函数重载来实现,重载后的函数具有不同的参数列表,从而返回不同的实例。

立即学习“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_;};

实战案例

创建两个单例对象:一个带有参数,一个不带参数。

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

工厂模式

函数重写

工厂模式可以通过函数重写来实现,重写后的函数在子类中具有不同的实现,从而创建不同的对象。

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();    }};

实战案例

创建两个工厂对象,每个对象创建不同的产品类型。

int main() {    Factory* factory1 = new ConcreteFactoryA();    Product* product1 = factory1->createProduct();    Factory* factory2 = new ConcreteFactoryB();    Product* product2 = factory2->createProduct();    // 检查两个产品类型是否不同    if (typeid(*product1) != typeid(*product2)) {        std::cout << "两个产品类型不同" << std::endl;    } else {        std::cout << "两个产品类型相同" << std::endl;    }}

以上就是C++ 函数重载和重写中单例模式与工厂模式的运用的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1447465.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月18日 00:35:24
下一篇 2025年12月18日 00:35:42

相关推荐

发表回复

登录后才能评论
关注微信