c++中如何实现一个简单的工厂模式_c++工厂模式设计与实现


工厂模式通过工厂类解耦对象创建过程,定义产品接口和具体实现类,利用基类指针和多态由工厂决定创建何种对象。

c++中如何实现一个简单的工厂模式_c++工厂模式设计与实现

工厂模式是一种常见的创建型设计模式,用来解耦对象的创建过程。在C++中,通过基类指针和多态机制,可以实现一个简单而清晰的工厂模式。它的核心思想是:由一个工厂类来决定创建哪种具体类型的对象,而不是在代码中直接使用new操作符。

定义产品接口

首先定义一个抽象基类(接口),表示所有产品共有的行为。

class Product {
public:
    virtual ~Product() = default;
    virtual void use() const = 0;
};

class ConcreteProductA : public Product {
public:
    void use() const override {
        std::cout << "Using Product A\n";
    }
};

class ConcreteProductB : public Product {
public:
    void use() const override {
        std::cout << "Using Product B\n";
    }
};

这里Product是抽象接口,ConcreteProductAConcreteProductB是具体实现。

实现简单工厂类

简单工厂并不是严格意义上的设计模式,但它非常实用。它提供一个静态方法,根据参数创建不同的产品对象。

class SimpleFactory {
public:
    enum class ProductType {
        TYPE_A,
        TYPE_B
    };

    static std::unique_ptr<Product> createProduct(ProductType type) {
        switch (type) {
            case ProductType::TYPE_A:
                return std::make_unique<ConcreteProductA>();
            case ProductType::TYPE_B:
                return std::make_unique<ConcreteProductB>();
            default:
                return nullptr;
        }
    }
};

客户端通过传入类型标识来获取对应的产品实例,无需关心具体创建逻辑。

使用示例

在main函数中调用工厂创建对象:

创意艺术设计的网站模板 创意艺术设计的网站模板

创意艺术设计的网站模板 创意艺术是指是把再简单不过的东西或想法不断延伸给予的另一种表现方式,创意设计包括工业设计、建筑设计、包装设计、平面设计、服装设计、个人创意特区等内容。 设计除了具备“初级设计”和“次设计”的因素外,还需要融入“与众不同的设计理念——创意”。搜索 一、初级设计 范围划分一般是以是否在表达图形上是否以“具象化”为指导目标,标志设计就像绘画一样真实表现图形。 二、次级设

创意艺术设计的网站模板 50 查看详情 创意艺术设计的网站模板
int main() {
    auto productA = SimpleFactory::createProduct(SimpleFactory::ProductType::TYPE_A);
    auto productB = SimpleFactory::createProduct(SimpleFactory::ProductType::TYPE_B);

    if (productA) productA->use(); // 输出: Using Product A
    if (productB) productB->use(); // 输出: Using Product B

    return 0;
}

这样就实现了对象创建与使用的分离,后续扩展新产品时只需修改工厂内部逻辑(或升级为工厂方法模式)。

优点与适用场景

简单工厂模式适合以下情况:

  • 创建逻辑集中且不常变动
  • 客户端不需要知道具体类名
  • 需要统一管理对象生命周期(配合智能指针)

缺点是违反开闭原则——新增产品需修改工厂代码。若需更高扩展性,可考虑“工厂方法模式”或“抽象工厂模式”。

基本上就这些。简单工厂在实际项目中很常见,尤其适用于配置驱动的对象创建场景。

以上就是c++++中如何实现一个简单的工厂模式_c++工厂模式设计与实现的详细内容,更多请关注其它相关文章!


# 适用于  # 义马学校网站建设  # 广水抖音seo收费吗  # 全网推广营销培训  # 市区seo方法  # 东莞外包营销推广公司招聘  # 响应式的网站怎么做推广  # 谷歌搜索关键词排名查询API  # 网站推广会员怎么做  # 免费p站推广网站破解版  # 附近网站推广设计  # c++  # 只需  # 是指  # 就像  # 是一种  # 是在  # 客户端  # 返回值  # 如何实现  # 多态  # new操作符 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: 青橙手机语音助手怎么唤醒_青橙手机语音助手设置与唤醒方法  菜鸟驿站的取件码忘了怎么办 手机快速查询指南  雨课堂官网在线登录 网页版雨课堂登录链接  AI图层蒙版怎么用_AI图层蒙版应用技巧与设计实例  Yandex无需登录畅游 俄罗斯搜索引擎最新官网指南  mysql如何限制远程访问_mysql远程访问限制方法  C++如何实现单例模式_C++线程安全的单例模式写法  《东方财富》条件单关闭方法  Selenium自动化:利用键盘模拟解决复杂日期输入框输入问题  TikTok视频播放中断怎么办 TikTok播放异常修复方法  win11资源管理器标签页怎么用 Win11文件管理器多标签高效操作【新功能】  《随手记》启用语音备注方法  铁路12306入口 铁路12306官网版入口登录网址  快手缓存清理方法  哔哩哔哩黑名单怎么查看  《宝可梦大集结》S4冠军之路开始时间介绍  《大周列国志》皇帝律令功能介绍  企查查官网和爱企查 企查查企业查询官网入口  学习通网页版个人登录_学习通网页版个人账户登录入口  实现二叉树的层序插入:基于树大小的路径导航  谷歌浏览器如何查找和删除恶意软件 谷歌浏览器内置安全清理工具使用教程  VBA Outlook邮件自动化:高效集成Excel数据与列标题的策略  Python类装饰器动态修改方法时的类型提示:Mypy插件实现精确静态分析  电子白板帮助菜单使用指南  在Django中动态检查模型关联:一种灵活的解决方案  TikTok笔记文字无法编辑如何解决 TikTok笔记文字编辑优化方法  向往的生活小游戏启动处_向往的生活小游戏立即启动  包子漫画官网链接官方地址 包子漫画在线观看官网首页入口  漫蛙manwa漫画官网链接_漫蛙manwa最新可用网址推荐  Sublime Text怎么关闭自动完成_Sublime禁用Auto Complete设置  mysql中如何分析索引使用情况_mysql索引使用分析方法  qq邮箱怎么注册_QQ邮箱注册步骤与注意事项  MySQL多重JOIN技巧:高效关联同一表获取多角色信息  《新三国志曹操传》游历事件袁尚突围攻略  《真我》申请退款方法  被称为海蜈蚣的海洋动物是  J*aScript实现网页表单实时输入字段比较与验证教程  《百度畅听版》关闭兴趣推荐方法  OpenWeatherMap API:通过城市名称获取天气预报数据指南  b站怎么查看视频的码率_b站视频码率查看方法  Highcharts雷达图轴线交点数值标注指南  Django模型动态关联检查:高效管理复杂关系  荣耀magicv5怎么上手测评  海棠书屋官方在线书籍入口 海棠书屋文学作品浏览官网链接  苹果手机聊天记录删除了如何恢复  《崩坏:星穹铁道》3.6版本异相仲裁打法及配队推荐  如何用mysql实现客户反馈管理_mysql客户反馈数据库方法  在React中正确处理HTML input type="number"的数值类型  Dagster资产间数据传递与用户配置管理教程  店铺如何做视频号推广?做视频号推广有用吗? 

 2025-10-25

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.