工厂模式通过基类指针和多态实现对象创建与使用的分离。定义抽象基类Product,具体产品A和B继承并实现use方法;工厂函数createProduct根据类型返回对应产品实例,主函数中通过基类指针调用use,实现多态。新增产品只需扩展工厂逻辑,符合开闭原则。

工厂模式是一种创建型设计模式,适用于对象创建逻辑比较复杂,或者希望把对象的创建和使用分离的场景。在C++中,通过基类指针和多态机制,可以轻松实现一个简单的工厂模式。
1. 定义产品接口
首先定义一个抽象基类(接口),所有具体产品都继承自它。
class Product {public: virtual ~Product() = default; virtual void use() const = 0;};class ConcreteProductA : public Product {public: void use() const override { std::cout << "Using Product An"; }};class ConcreteProductB : public Product {public: void use() const override { std::cout << "Using Product Bn"; }};
2. 创建工厂类
工厂类提供一个静态方法,根据输入参数决定创建哪种产品对象。
class Factory {public: enum class ProductType { TYPE_A, TYPE_B }; static std::unique_ptr createProduct(ProductType type) { switch (type) { case ProductType::TYPE_A: return std::make_unique(); case ProductType::TYPE_B: return std::make_unique(); default: return nullptr; } }};
3. 使用示例
客户端代码无需知道具体类名,只需调用工厂方法即可获得所需对象。
立即学习“C++免费学习笔记(深入)”;
int main() { auto productA = Factory::createProduct(Factory::ProductType::TYPE_A); auto productB = Factory::createProduct(Factory::ProductType::TYPE_B); if (productA) productA->use(); // 输出: Using Product A if (productB) productB->use(); // 输出: Using Product B return 0;}
这个实现方式把对象创建集中到工厂中,新增产品时只需扩展工厂逻辑,不修改已有代码,符合开闭原则。基本上就这些,简单但实用。
以上就是c++++怎么实现一个简单的工厂模式_c++工厂设计模式实现示例的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1479857.html
微信扫一扫
支付宝扫一扫