广州做外贸网站的公司简介看车二手车网站源码

web/2025/9/27 1:59:05/文章来源:
广州做外贸网站的公司简介,看车二手车网站源码,内蒙古建设住房与城乡厅官方网站,鞋材 东莞网站建设介绍 定义一个工厂类#xff0c;它可以根据参数的不同返回不同类的实例#xff0c;被创建的实例通常都具有相同的父类。因为在简单工厂模式中用于创建实例的方法是静态方法#xff0c;因此简单工厂模式又被称为静态工厂方法模式#xff0c;属于类创建型模式 实现 class Pr…介绍 定义一个工厂类它可以根据参数的不同返回不同类的实例被创建的实例通常都具有相同的父类。因为在简单工厂模式中用于创建实例的方法是静态方法因此简单工厂模式又被称为静态工厂方法模式属于类创建型模式 实现 class Product { public:void methodSame() { // 公共方法的实现std::cout methodSame std::endl;}virtual void methodDiff() 0; // 抽象方法的声明由具体产品实现 };class ConcreteProductA : public Product { public:void methodDiff() override {std::cout ConcreteProductA std::endl;} };class ConcreteProductB : public Product { public:void methodDiff() override {std::cout ConcreteProductB std::endl;} };class Factory { public:static Product *getProduct(std::string arg) {Product *product NULL;if (arg A) {product new ConcreteProductA();} else if (arg B) {product new ConcreteProductB();}return product;} };int main() {Product *A Factory::getProduct(A);A-methodSame();A-methodDiff();Product *B Factory::getProduct(B);B-methodSame();B-methodDiff();return 0; } 简单工厂模式的简化 将Factory合并到父类Product中此时必须分别在头文件和源代码文件中分开编写不然编译报错 class Product { public:void methodSame();virtual void methodDiff() 0; // 抽象方法的声明由具体产品实现static Product *getProduct(std::string arg); };class ConcreteProductA : public Product { public:void methodDiff() override; };class ConcreteProductB : public Product { public:void methodDiff() override; }; #include myclass.hvoid Product::methodSame() { // 公共方法的实现std::cout methodSame std::endl; }Product* Product::getProduct(std::string arg) {Product *product NULL;if (arg A) {product new ConcreteProductA();} else if (arg B) {product new ConcreteProductB();}return product; }void ConcreteProductA::methodDiff() {std::cout ConcreteProductA std::endl; }void ConcreteProductB::methodDiff() {std::cout ConcreteProductB std::endl; } 总结 优点        1. 工厂类包含必要的判断逻辑可以决定什么时候创建哪一个产品类的实例。 2. 客户端无须知道所创建的具体产品类的类名只需要知道对应的参数即可。 3. 通过引入配置文件可以在不修改任何客户端代码的情况下更换和增加新的具体产品类在一定程度上提高了系统的灵活性。 缺点 1. 由于工厂类集中了所有产品的创建逻辑职责过重一旦不能正常工作整个系统都要受到影响。 2. 使用简单工厂模式势必会增加系统中类的个数引入了新的工厂类增加了系统的复杂度和理解难度。 3. 系统扩展困难。一旦添加新产品就不得不修改工厂逻辑在产品类型较多时有可能造成工厂逻辑过于复杂不利于系统的扩展和维护。 4. 简单工厂模式由于使用了静态工厂方法造成工厂角色无法形成基于继承的等级结构。 练习 使用简单工厂模式设计一个可以创建不同几何形状如圆形、方形和三角形等的绘图工具每个几何图形都具有绘制draw和擦除erase两个方法要求在绘制不支持的几何图形时提示一个UnSupportedShapeException。 myclass.h // // Created by yuwp on 2024/1/12. //#ifndef DESIGNPATTERNS_CLASS_H #define DESIGNPATTERNS_MYCLASS_H#include iostreamclass Graphical { public:virtual void draw() 0;virtual void erase() 0;static Graphical *getGraphical(std::string arg); };class Circle : public Graphical { public:void draw() override;void erase() override; };class Square : public Graphical { public:void draw() override;void erase() override; };class Triangle : public Graphical { public:void draw() override;void erase() override; };class UnSupportedShapeException : public std::exception { public:UnSupportedShapeException() {};~UnSupportedShapeException() {};const char* what() const _GLIBCXX_TXN_SAFE_DYN _GLIBCXX_USE_NOEXCEPT override; };#endif //DESIGNPATTERNS_CLASS_Hmyclass.cpp // // Created by yuwp on 2024/1/12. //#include myclass.hGraphical* Graphical::getGraphical(std::string arg) {if (arg circle) {return new Circle();} else if (arg square) {return new Square();} else if (arg triangle) {return new Triangle();} else {throw UnSupportedShapeException();} }void Circle::draw() {std::cout Draw circle std::endl; }void Circle::erase() {std::cout Erase circle std::endl; }void Square::draw() {std::cout Draw square std::endl; }void Square::erase() {std::cout Erase square std::endl; }void Triangle::draw() {std::cout Draw triangle std::endl; }void Triangle::erase() {std::cout Erase triangle std::endl; }const char* UnSupportedShapeException::what() const _GLIBCXX_TXN_SAFE_DYN _GLIBCXX_USE_NOEXCEPT {return Unsupported shape; } main.cpp #include iostream #include mutex #include myclass.hint main() {Graphical *graph;try {graph Graphical::getGraphical(circle);graph-draw();graph-erase();graph Graphical::getGraphical(square);graph-draw();graph-erase();graph Graphical::getGraphical(triangle);graph-draw();graph-erase();graph Graphical::getGraphical(unknown);graph-draw();graph-erase();} catch (const std::exception e) {std::cout e.what() std::endl;}return 0; }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/82480.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站运营 策划 推广 维护成都公众号小程序开发

linux上静态库和动态库的编译和使用(附外部符号错误浅谈) 这就是静态库和动态库的显著区别,静态库是编译期间由链接器通过include目录找到并链接到到可执行文件中,而动态库则是运行期间动态调用,只有运行时找不到对应动…

上海开本建设工程有限公司玉林网站seo

紧接前文,本文是农田场景下庄稼作物、杂草检测识别的第二篇文章,前文是基于YOLOv3这一网络模型实现的目标检测,v3相对来说比较早期的网络模型了,本文是基于最为经典的YOLOv5来开发不同参数量级的检测端模型。 首先看下实例效果&a…

网站数据丢失了做数据恢复需多久转发 wordpress 奖励

插值算法简介 数据分析是在大数据时代下不可获取的一环,合理、全面地分析数据,能够使得决策者在决策时作出最为明智的决定。在数据分析过程中,常常可以使用插值算法来根据已知的数据估算出未知的数据,从而模拟产生一些新的值来满…

觅图网免费素材图库深圳网站优化页面

like查询是区分大小写的转载于:https://blog.51cto.com/cyxinda/1226040

东莞网站seo网站网络

本文转载自公众号“夕小瑶的卖萌屋”,专业带逛互联网算法圈的神操作 -----》我是传送门 关注后,回复以下口令: 回复【789】 :领取深度学习全栈手册(含NLP、CV海量综述、必刷论文解读) 回复【入群】&…

石家庄哪里能制作网站wordpress linux下载

传送门:异步编程系列目录…… 最近在学习.NET4.5关于“并行任务”的使用。“并行任务”有自己的同步机制,没有显示给出类似如旧版本的:事件等待句柄、信号量、lock、ReaderWriterLock……等同步基元对象,但我们可以沿溪这一编程习…

宿迁哪里有做网站开发的wordpress去掉模板登录

定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。 思考题: 请同时实现迭代版本和递归版本。 数据范围 链表长度 [0,30] 。 样例 输入:1->2->3->4->5->NULL 输出:5->4->3->2->1->N…

建设网站的企业邮箱网站建设服务python做问卷调查的网站

SineSurface直译为正弦曲面.这有可能和你想象的正弦曲线不一样.如果把正弦曲线绕Y轴旋转,得到的该是正弦波曲面.这个曲面与上一节中的罗马曲面有些相似,那个是被捏过的正四面体,这个则是个被捏过正方体. 本文将展示SineSurface与粽子曲面的生成算法和切图,使用自己定义语法的脚…

公司网站建设北京商业计划的网站建设费用

文章目录 1.视频输出模块1.1 视频输出初始化1.1.1 视频输出初始化主要流程1.1.2 calculate_display_rect初始化显示窗口大小 1.2 视频输出逻辑1.2.1 event_loop开始处理SDL事件1.2.2 video_refresh1.2.2.1 计算上一帧显示时长,判断是否还要继续上一帧1.2.2.2 估算当前帧显示时长…

网站不会更新文章网站资讯建设

可以用C语言中的system()函数来实现系统的自动关机程序,可以设置多长时间后将自动关机。当然马上关机也是可以的,我们就可以恶搞别人计算机了(你事先得知道怎么解),将写好的自动关机程序复制到别人电脑,然后将可执行的文件设为开机…

公司网站自己创建凡科快速建站

这篇文章我们来讲解一下数据结构中非常重要的B-树。 目录 1.B树的相关介绍 1.1、B树的介绍 1.2、B树的特点 2.B树的节点类 3.小结 1.B树的相关介绍 1.1、B树的介绍 在介绍B树之前,我们回顾一下我们学的树。 首先是二叉树,这个不用多说&#xff…

网站付费推广有哪些wordpress space

!!!注意!!! 看本篇之前,一定要先看笔者上一篇的LPA*讲解,笔者统一了符号看起来过渡会更加好理解! 到目前为止,我们学习了广度优先搜索Dijkstra算法、能够计…

网站后台传不了图片中山精品网站建设案例

这个专题学习了两种算法 1.稳定婚姻匹配问题 2.最大团问题 稳定婚姻匹配问题: 1.Stable Match 关于信号站匹配 多了一个容量的权值 如果距离相同看容量大小 数据处理较麻烦! 2.marriage 稳定婚姻匹配问题入门题 3.The Stable Marriage problem 和入门题…

静态购物网站模版图片高清处理在线

1、定义 多元有序逻辑回归用于分析有序分类因变量与一个或多个自变量之间的关系。有序逻辑回归适用于因变量具有自然排序但没有固定间距的类别,例如疾病严重程度(轻度、中度、重度)或调查问卷中的满意度评分(非常不满意、不满意、…

网站建设成立领导小组创意网店店铺名字大全

我们经常会遇到表被锁的情况,这可能会严重影响数据库的性能和可用性。我将与大家分享如何识别、分析和解决这些问题,以及如何使用特定的 SQL 查询来执行解锁操作。 了解表锁的原因 首先,让我们来了解一下导致表被锁的常见原因。长时间运行的…

优化网站排名软件织梦网站wap

文章目录 Rosenblatt感知器基础收敛算法算法概述算法步骤关键点说明总结 C实现要点代码 参考文献 Rosenblatt感知器 基础 感知器,也可翻译为感知机,是一种人工神经网络。它可以被视为一种最简单形式的前馈式人工神经网络,是一种二元线性分类…

wordpress企业站被黑网站活动专题页面设计

在Python项目中,通常会有一个名为 requirements.txt 的文件,其中列出了项目所需的所有依赖包及其版本。 1. 使用freeze 如果你的项目中没有 requirements.txt 文件,你可以通过下面的命令创建一个当前项目所在环境下已安装的包及其版本的 re…

小学网站aspwordpress 2.9.1漏洞

文章目录 Selenium Java环境搭建配置系统环境变量PATH验证环境是否搭建成功常见问题&解决办法 Selenium Java环境搭建 Java版本最低要求为8,这里默认大家都下载好了Java。😆 下载chrome浏览器(点我下载) 观察chrome版本。…

金融网站设计欣赏关键词推广优化

1.什么是gcc \qquadgcc是linux中的一款编译源代码的文本编译器 2.编译过程 \qquad比如对hello.c文件进行编译, \qquad首先,预处理器cpp对hello.c进行处理,cpp会把头文件展开,宏替换,注释去掉,经过cpp处理后…

现在还可以做夺宝网站wordpress 悬浮网易云

日志作为快速定位程序问题的主要手段,日志几乎是所有程序都必须拥有的一部分,下面我们就看下怎么使用log4net.dll文件: 1.下载log4net.dll文件 2.创建自己的项目 3.在自己项目下的引用log4net.dll文件 4.在app.config配置文件里添加配置信息&…