当前位置: 首页 > 编程日记 > 正文

设计模式学习2 工厂模式

工厂模式其实就是简单模式的升级版本,

简单模式将界面与业务逻辑区分开,但是如果不停的增加计算器的运算方式,简单模式中的工厂Factory 中判断的业务逻辑会变非常复杂,这不符合封装的原则。

所以在此之上将Factory抽象了出来,代码如下:

class Cal
{public:virtual double getResult(){return 0;}void setPara(double paraA,double paraB){parameterA = paraA;parameterB = paraB;}
protected:double parameterA;double parameterB;};class Plus:public Cal
{
public:Plus(){}double getResult(){return parameterA + parameterB;}
};class Minus:public Cal
{
public:Minus(){}double getResult(){return parameterA - parameterB;}
};class FactoryInterface
{
public:virtual Cal * createCal() = 0;
};class AddFactory:public FactoryInterface
{
public:Cal *createCal(){return new Plus();}
};class MinusFactory:public FactoryInterface
{
public:Cal *createCal(){return new Minus();}
};void main()
{double paraA = 5,paraB=43,result = 0;FactoryInterface *factory = new AddFactory;Cal *cal = factory->createCal();cal->setPara(paraA,paraB);result = cal->getResult();cout<<result<<endl;
}

转载于:https://www.cnblogs.com/liujin2012/archive/2013/01/09/2853144.html

相关文章:

输入字符串,包含数字,大小写字母,编程输出出现做多的数字的和

题目描述&#xff1a; 输入字符串&#xff0c;包含数字&#xff0c;大小写字母&#xff0c;编程输出出现做多的数字的和。 思路&#xff1a; 1.创建输入对象2.输入字符串3.利用正则将字母分离出&#xff0c;剩余的每一个字符串即为待统计的每一个数字&#xff0c;存入字符串数组…

优化思路千万种,基于下界函数的最优化效率如何?

作者丨stephenDC来源 | 大数据与人工智能&#xff08;ID:ai-big-data&#xff09;导读&#xff1a;生活中我们处处面临最优化的问题&#xff0c;比如&#xff0c;怎么样一个月减掉的体重最高&#xff1f;怎么样学习效率最高&#xff1f;怎么样可以最大化实现个人价值&#xff1…

Quintum 语音网关设置方法

Quintum 网关基本配置 Quintum 网关基本配置 登陆方式&#xff1a;方法一&#xff1a;串口登陆&#xff08;1&#xff09;&#xff0e;用配套的串口线连接网关的CONSOLE口和电脑的串口。 &#xff08;2&#xff09;&#xff0e;开启电脑的的超级终端&#xff0c;路径如下&#…

Activex test contact failed to create control 未指定的错误 控件无法加载的原因

转自&#xff1a;http://blog.csdn.net/phker/archive/2009/12/25/5073402.aspx 本文指的是vc项目的activex 出现这个问题, 我总结了总共有以下几点,可能还有其他原因: 1.中文问题:如果你的项目类型是多字节的,而不是unicode编码的,你可能要注意这个问题了,我就发生了这个问题…

人工智能技术在内容行业的应用:AI对中长尾内容平台还是奢侈品

整理 | 夕颜出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;导读&#xff1a;随着人工智能技术的发展&#xff0c;媒体行业本身在不断地发生变化&#xff0c;从传统媒体到新媒体&#xff0c;改变的不仅是信息载体&#xff0c;更是一种新的逻辑&#xff0c;无论是内容…

QQ爬虫-爬取QQ空间

背景&#xff1a;在一篇个人博客看到了相关的爬虫的知识&#xff0c;个人比较有兴趣&#xff0c;就花了点时间研究了一下&#xff0c;主要通过好友空间的互动(相互访问量&#xff0c;点赞&#xff0c;评论&#xff0c;以及其他互动)&#xff0c;以及好友之间聊天的活跃度&#…

perl编程手册

2019独角兽企业重金招聘Python工程师标准>>> perl编程手册: -------------------------------手册-------------------------------- perl手册.chm http://vdisk.weibo.com/s/moN-p -------------------------------视频-------------------------------- 俺的…

VC使用ActiveX控件常见问题

转自&#xff1a;http://lingchuangsong.blog.163.com/blog/static/126932322008631104133309/ 一方面&#xff0c;它表示将你联系到Microsoft、Internet和业界的新技术的小型快速的可重用组件。它与开发语言无关&#xff0c;任何支持 ActiveX控件的软件开发平台&#xff08;如…

你绝没用过的一款高级空间可视化工具

作者 | Shan He转载自高级农民工&#xff08;ID: Mocun6&#xff09;说起 Python 中的可视化&#xff0c;我们一般用的最多的是 Matplotlib&#xff0c;绘制一般的图效果都很好。有时候也会用风格比较好看的 Pyecharts 库&#xff0c;尤其是在展示空间地图上的数据时。不过它的…

揭秘vue——vue-cli3全面配置

★ vue-cli3 全面配置 ★ Nuxt.js 全面配置 创建项目 配置环境变量 通过在package.json里的scripts配置项中添加--mode xxx来选择不同环境 在项目根目录中新建.env, .env.production, .env.analyz等文件 只有以 VUE_APP_ 开头的变量会被 webpack.DefinePlugin 静态嵌入到客户端…

周礼栋:现在是计算机系统和网络研究“最好的时代”

编者按&#xff1a;随时随地使用各种系统和工具&#xff0c;对现代人来说早已是司空见惯的事&#xff0c;但这一切完美工作的技术和服务并不是凭空出现的。正是因为微软亚洲研究院副院长周礼栋博士和他带领的团队这样从事系统和网络研究工作的研发人员在幕后不断的努力和创新&a…

ChaLearn Gesture Challenge_2:examples体验

前言&#xff1a; 在上一篇博文ChaLearn Gesture Challenge_1&#xff1a;CGD数据库简单介绍中已经简单介绍过CGD2011数据库&#xff0c;了解到该数据库可以作为公开的数据库来测试在深度信息和RGB信息上的手势识别。当然了&#xff0c;也可以通过参加这个挑战赛来对比自己的手…

vs2008 外部调用ActiveX控件接口方法

转自&#xff1a;http://topic.csdn.net/u/20090605/16/018e26e9-06e2-4e0d-8099-bc8eb326afde.html sndaxdrs: 初学activeX &#xff0c;我写的一个 activeX控件测试程序。 分别调用两个 自定义方法&#xff0c; 分别出现 “找不到成员”&#xff0c;和“非选择性的参数”的提…

设计模式之禅笔记

2019独角兽企业重金招聘Python工程师标准>>> 1.设计原则 1)单一职责原则 There should never be more than one reason for a class to change &#xff08;就一个类而言&#xff0c;应该只有一个引起它变化的原因&#xff09; 用于控制类的粒度大小,防止类过于复杂…

vs2008部署问题

转自&#xff1a;http://tangxingqt.blog.163.com/blog/static/2771087220098214755269/ 参考资料 1、VS2005解决"应用程序配置不正确&#xff0c;程序无法启动"问题 2、VS2005安装文件 "由于应用程序配置不正确&#xff0c;应用程序未能启动" 3、Micro…

expdp数据泵导出操作

数据泵需要在本地执行&#xff0c;不可以远程登录操作。 数据泵需要建立目录directory --sys下 create directory su as d:\xs 目录的数据字典是dba_directories SYSncbeta>select owner,directory_name,directory_path from dba_directories; 要求导出scott用户下的emp表…

slf4j 日志监控

问题描述 监控系统 新系统起步&#xff0c;旨在监控原有系统的各种问题。主要的一部分&#xff0c;就是监视原有系统的日志。 日志&#xff0c;是Java企业级应用开发必不可少的一部分&#xff0c;市场上有诸多日志框架。我们选用slf4j。 日志有以下级别&#xff1a; TRACE, DEB…

阿里90后科学家研发,达摩院开源新一代AI算法模型

整理 | 一一出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;AI科技大本营7月5日消息&#xff0c;阿里达摩院宣布开源新一代人机对话模型ESIM。该算法模型提出两年多&#xff0c;已被200多篇论文引用&#xff0c;更曾在国际顶级对话系统评测大赛&#xff08;DSTC7&…

在vs2008中配置OpenCV2.2

1、下载OpenCV2.2&#xff1a;http://www.opencv.org.cn/index.php/Download 2、下载后解压缩OpenCV-2.2.0-win.zip&#xff1b; 3、下载CMake&#xff1a;http://www.cmake.org/cmake/resources/software.html 4、安装CMake&#xff1b; 5、运行cmake-gui&#xff0c;在wh…

开发者,什么是你真正关心的问题?| AI ProCon 2019

2018 年&#xff0c;上千名开发者与上百名技术专家齐聚一堂&#xff0c;在 CSDN 2018 AI开发者大会上以“AI技术与应用”为核心&#xff0c;深度聚焦人工智能的技术创新与行业应用&#xff0c;真正做到了“只讲技术&#xff0c;拒绝空谈”。今年&#xff0c;在产业智能化的浪潮…

C语言程序的结构

1.一个程序由一个或多个源程序文件组成。 a.预处理指令 b.全局声明 c.函数定义 2.函数是C程序的主要组成部分。 3.一个函数包括两个部分。 a.函数首部 int 函数类型 max 函数名 (int 函数参数类型 x, 函数参数名 int 函数参数类型 y…

flask 核心 之 应用上下文 及 请求上下文

Werkzeugs 是 Flask 的底层WSGI库。什么是WSGI&#xff1f; 一段简单的app&#xff1a; def dispath_request(self, request):return Response(Hello World!)def wsgi_app(self, environ, start_response):request Request(environ)response self.dispath_request(request)re…

vs2008中常见错误解决方法汇总

1、error C2859 vc90.idb is not the idb file that was used when this precompiled header was created。 解决方法&#xff1a;选中工程-->点击右键属性-->Configuration Properties-->C/C-->Output Files-->Program Database File Name中的$(IntDir)/vc90.p…

加速AI应用落地,英特尔AI 2.0的进阶之道

人工智能模型的复杂度不断增加&#xff0c;对内存的需求也越来越大。深度学习的进一步发展需要解决内存限制问题&#xff0c;而当前的解决方案无法利用所有可用计算&#xff0c;业内人士逐渐意识到需要专用芯片来支持深度学习训练和推理。英特尔则在人工智能方面提供优越的硬件…

MySQL基础之 恢复数据和数据库迁移

1、mysql命令或者source命令恢复数据 这两个命令在进行恢复数据的时候要检查是否创建数据库。如果数据库不存在&#xff0c;则恢复失败。 数据库迁移 1、相同版本的mysql数据库之间的迁移。 mysqldump -h host1 -uroot -ppwd --all-databases | mysql -h host2 -uroot -ppw…

.Net 文件流 System.IO之Stream

转自 &#xff1a;http://www.cnblogs.com/yukaizhao/archive/2011/07/28/stream.html Stream在msdn的定义&#xff1a;提供字节序列的一般性视图&#xff08;provides a generic view of a sequence of bytes&#xff09;。这个解释太抽象了&#xff0c;不容易理解&#xff1b…

Hinton等人最新研究:大幅提升模型准确率,标签平滑技术到底怎么用?

作者 | Rafael Mller , Simon Kornblith, Geoffrey Hinton译者 | Rachel责编 | Jane出品 | AI科技大本营&#xff08;ID: rgznai100&#xff09;【导读】损失函数对神经网络的训练有显著影响&#xff0c;也有很多学者人一直在探讨并寻找可以和损失函数一样使模型效果更好的函数…

WaitForSingleObject和WaitForMultipleObjects用法

转自&#xff1a;http://www.360doc.com/content/10/0512/09/1072296_27178529.shtml 等待函数可使线程自愿进入等待状态&#xff0c;直到一个特定的内核对象变为已通知状态为止。这些等待函数中最常用的是WaitForSingleObject: DWORD WaitForSingleObject(HANDLE hObject, DW…

【面试必问】支撑百万并发的IO多路复用技术你了解吗?

多路复用其实并不是什么新技术&#xff0c;它的作用是在一个通讯连接的基础上可以同时进行多个请求响应处理。对于网络通讯来其实不存在这一说法&#xff0c;因为网络层面只负责数据传输&#xff1b;由于上层应用协议的制订问题&#xff0c;导致了很多传统服务并不能支持多路复…

DllMain already defined in dllmain.obj错误

错误 uafxcw.lib(dllmodul.obj) : error LNK2005: DllMain already defined in dllmain.obj 修改: 去掉宏定义 _USRDLL 转载于:https://blog.51cto.com/co63oc/1122378