单例模式:通过函数重载提供不同参数的单例实例。工厂模式:通过函数重写创建不同类型的对象,实现创建过程与具体产品类的解耦。
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工厂模式
函数重写
工厂模式可以通过函数重写来实现,重写后的函数在子类中具有不同的实现,从而创建不同的对象。
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登录后复制
以上就是C++ 函数重载和重写中单例模式与工厂模式的运用的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2576049.html