news 2026/1/3 8:04:37

工厂方法模式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
工厂方法模式

factory.h

#ifndef FACTORY_H #define FACTORY_H #include <QString> //工厂 class Factory { public: Factory(){}; // FruitFactory* p = new AppleFactory(); // // ... // delete p; // 注意:是通过基类指针删子类对象 // 如果 FruitFactory 的析构函数不是 virtual: // delete p; 只会调用 FruitFactory 的析构函数 // 不会调用 AppleFactory 的析构函数 // 结果是:AppleFactory 里自己管理的资源(比如 new 出来的内存、打开的文件、锁等)不会被释放,行为是未定义的(UB),最常见就是泄漏。 virtual ~Factory()=default; // 类型方法:返回自己的工厂类型 virtual QString getType() const = 0; }; //苹果 class AppleFactory:public Factory { public: AppleFactory(){}; QString getType()const override{ return "apple"; } }; //香蕉 class BananaFactory:public Factory { public: BananaFactory(){}; QString getType()const override{ return "banana"; } }; //葡萄 class GrapeFactory:public Factory { public: GrapeFactory(){}; QString getType()const override{ return "grape"; } }; #endif // FACTORY_H

mainwindow.h

#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QDebug> #include "factory.h" QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); private: Ui::MainWindow *ui; }; #endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h" #include "ui_mainwindow.h" #include <QVector> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); AppleFactory *apple=new AppleFactory(); BananaFactory *banana=new BananaFactory(); GrapeFactory *grape=new GrapeFactory(); Factory *f1=apple; Factory *f2=banana; Factory *f3=grape; QVector<Factory*> vec; vec.push_back(f1); vec.push_back(f2); vec.push_back(f3); for (auto item:vec) { qDebug()<<item->getType(); } delete apple; delete banana; delete grape; } MainWindow::~MainWindow() { delete ui; }

运行截图:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/25 5:30:01

婚庆公司引入EmotiVoice制作新人告白

婚庆公司引入EmotiVoice制作新人告白 在婚礼视频的剪辑间里&#xff0c;一段“告白”正在被反复调试。导演皱着眉头&#xff1a;“这配音太机械了&#xff0c;像是AI念稿。”一旁的客户也摇头&#xff1a;“声音不像我&#xff0c;感情也不对&#xff0c;听起来不走心。”这样的…

作者头像 李华
网站建设 2025/12/31 13:45:52

EmotiVoice支持自定义情感标签训练,拓展应用场景

EmotiVoice支持自定义情感标签训练&#xff0c;拓展应用场景 在虚拟主播直播带货时突然切换成“愤怒”语气推销产品&#xff0c;或是客服机器人用“温柔安抚”模式化解用户投诉——这些曾经只存在于科幻电影中的场景&#xff0c;正随着情感语音合成技术的突破逐渐成为现实。传统…

作者头像 李华
网站建设 2025/12/18 2:00:37

JupyterHub配置实战:从零到精通的5个关键步骤

JupyterHub配置实战&#xff1a;从零到精通的5个关键步骤 【免费下载链接】jupyterhub Multi-user server for Jupyter notebooks 项目地址: https://gitcode.com/gh_mirrors/ju/jupyterhub JupyterHub作为强大的多用户环境管理平台&#xff0c;其配置过程决定了系统的性…

作者头像 李华
网站建设 2025/12/18 2:00:07

EmotiVoice语音在车载环境中的清晰度表现

EmotiVoice语音在车载环境中的清晰度表现 在高速行驶的车内&#xff0c;驾驶员需要一边关注路况&#xff0c;一边处理来自导航、车辆状态和娱乐系统的多重信息。此时&#xff0c;语音作为最安全的人机交互通道&#xff0c;其清晰度与表达力直接决定了交互效率甚至行车安全。然而…

作者头像 李华
网站建设 2025/12/25 18:59:40

电商商品介绍视频自动生成流水线

电商商品介绍视频自动生成流水线中的多情感语音合成技术解析 在今天的电商战场上&#xff0c;一个爆款视频可能只需要几秒钟就能抓住用户注意力。而在这短短几十秒里&#xff0c;决定用户是否停留的关键&#xff0c;往往不只是画面——声音的情绪张力、语调的亲和力&#xff0c…

作者头像 李华
网站建设 2025/12/26 2:57:38

EmotiVoice语音合成引擎的跨平台兼容性分析

EmotiVoice语音合成引擎的跨平台兼容性分析 在虚拟助手越来越“懂人心”、游戏NPC开始拥有情绪起伏的今天&#xff0c;用户早已不再满足于那种机械朗读式的语音输出。他们期待的是有温度、有个性、甚至能感知语境情绪的声音——这正是现代文本转语音&#xff08;TTS&#xff09…

作者头像 李华