news 2026/4/16 11:00:40

工厂方法模式

作者头像

张小明

前端开发工程师

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进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 10:20:29

让AI语音成为桥梁,而不是替代

让AI语音成为桥梁&#xff0c;而不是替代 在虚拟助手机械地念出天气预报、有声书用千篇一律的语调讲述跌宕起伏的故事时&#xff0c;我们不禁要问&#xff1a;为什么技术越先进&#xff0c;声音反而越“不像人”&#xff1f; 语音的本质是情感的载体。人类交流中超过70%的信息…

作者头像 李华
网站建设 2026/4/16 10:20:53

少数民族语言支持计划:EmotiVoice在行动

少数民族语言支持计划&#xff1a;EmotiVoice在行动 在云南红河的清晨&#xff0c;一位哈尼族老人用母语讲述着古老的迁徙传说。这段声音被录下后&#xff0c;仅用了8秒钟音频和一段数字化文本&#xff0c;一个属于他音色的“数字分身”便开始朗读更多未曾录制过的古歌——语气…

作者头像 李华
网站建设 2026/4/16 10:20:19

EmotiVoice在安静/嘈杂环境下的播放效果

EmotiVoice在安静与嘈杂环境下的语音表现力解析 在车载导航提示音被引擎轰鸣淹没、有声书朗读因语调平直而令人昏昏欲睡的今天&#xff0c;用户对语音交互的真实感和适应性提出了前所未有的高要求。传统TTS系统虽然能“说话”&#xff0c;却常常“无情”也“无魂”。而EmotiVoi…

作者头像 李华
网站建设 2026/4/16 10:20:08

EmotiVoice在直播场景的应用设想:实时生成主播语音

EmotiVoice在直播场景的应用设想&#xff1a;实时生成主播语音 在一场深夜的带货直播中&#xff0c;弹幕突然刷起“主播累了&#xff0c;快休息吧”。镜头前的真人主播确实已连续讲解三小时&#xff0c;声音略显疲惫。但就在此时&#xff0c;画面一转——一个音色几乎完全一致、…

作者头像 李华
网站建设 2026/4/16 10:20:27

MinIO开源版vs商业版:5分钟搞懂版本选择与安装避坑指南

MinIO开源版vs商业版&#xff1a;5分钟搞懂版本选择与安装避坑指南 【免费下载链接】minio minio/minio: 是 MinIO 的官方仓库&#xff0c;包括 MinIO 的源代码、文档和示例程序。MinIO 是一个分布式对象存储服务&#xff0c;提供高可用性、高性能和高扩展性。适合对分布式存储…

作者头像 李华
网站建设 2026/4/15 19:47:37

trt_pose完整入门指南:快速掌握实时姿态估计算法

trt_pose完整入门指南&#xff1a;快速掌握实时姿态估计算法 【免费下载链接】trt_pose Real-time pose estimation accelerated with NVIDIA TensorRT 项目地址: https://gitcode.com/gh_mirrors/tr/trt_pose trt_pose是一个基于NVIDIA TensorRT技术优化的实时姿态估计…

作者头像 李华