news 2026/8/8 0:20:46

工厂方法模式

作者头像

张小明

前端开发工程师

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/8/7 22:53:04

不同职业人群对EmotiVoice的应用需求分析

不同职业人群对EmotiVoice的应用需求分析 在远程教学反复卡顿、游戏NPC对话机械重复、有声书录制耗时费力的今天&#xff0c;我们越来越意识到&#xff1a;语音交互不能只是“能听清”&#xff0c;更要“听得进”。真正打动人的声音&#xff0c;需要情绪的起伏、语气的变化和个…

作者头像 李华
网站建设 2026/8/7 15:46:35

手机系统预装应用包彻底删除

本文以华为手机 HarmonyOS 为例。 HarmonyOS/EMUI 系统预装应用删除 华为 HarmonyOS 与 EMUI 系统均为基于安卓底层架构的自主定制系统&#xff0c;二者运行逻辑与原生安卓保持一致。卸载系统预装应用需调用系统级操作权限&#xff0c;该权限通常被称为 ROOT。 鉴于华为已关闭…

作者头像 李华
网站建设 2026/8/7 17:38:01

EmotiVoice能否实现多人对话同步生成?技术可行性评估

EmotiVoice能否实现多人对话同步生成&#xff1f;技术可行性评估 在虚拟角色日益“活”起来的今天&#xff0c;用户不再满足于听到一段机械朗读——他们希望看到两个AI角色展开一场有来有往、情绪起伏的真实对话。这种需求催生了一个关键问题&#xff1a;现有的开源语音合成模型…

作者头像 李华
网站建设 2026/8/7 14:42:02

FusionCompute 8.0 实验环境搭建:完整资源获取与部署指南

FusionCompute 8.0 实验环境搭建&#xff1a;完整资源获取与部署指南 【免费下载链接】FusionCompute8.0资源下载指南分享 本仓库提供了一个详细的资源文件&#xff0c;内含百度网盘连接及提取码&#xff0c;以及详细的资源列表&#xff0c;方便您学习和使用FusionCompute 8.0。…

作者头像 李华
网站建设 2026/8/7 15:43:57

AI主播直播间搭建:EmotiVoice语音部分实现

AI主播直播间搭建&#xff1a;EmotiVoice语音部分实现 在AI主播逐渐走入大众视野的今天&#xff0c;观众早已不再满足于“会说话”的数字人。他们希望看到一个有情绪起伏、能共情互动、甚至带有鲜明性格特征的虚拟形象——而这一切的核心&#xff0c;正是声音。 传统文本转语音…

作者头像 李华
网站建设 2026/8/7 12:09:28

静态代码扫描服务 100分(python、java、c++、js、c

静态代码扫描服务 100分&#xff08;python、java、c、js、c&#xff09;题目静态扫描可以快速识别源代码的缺陷&#xff0c;静态扫描的结果以扫描报告作为输出&#xff1a;1、文件扫描的成本和文件大小相关&#xff0c;如果文件大小为N&#xff0c;则扫描成本为N个金币2、扫描…

作者头像 李华