C++设计模式从0进击-1-简单(静态)工厂模式_心因动有的博客-程序员秘密

技术标签: C/C+  C++设计模式入门  设计模式(design model)  

简单工厂模式的工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例。

不修改代码的话,是无法扩展的。

 
#include <iostream>
using namespace std;

class COperation
{
public:
	int m_nFirst;
	int m_nSecond;

	virtual double GetResult()
	{
		double dResult = 0;
		return dResult;
	}
};

//加法
class AddOperation: public COperation
{
	virtual double GetResult()
	{
		return m_nFirst+ m_nSecond;
	}
};

//减法
class SubOperation: public COperation
{
public:
	virtual double GetResult()
	{
		return m_nFirst - m_nSecond;
	}
};

//工厂类
class CCaculatorFactory
{
public:
	static COperation * Create(char cOperator);
};

COperation * CCaculatorFactory::Create(char cOperator)
{
	COperation * oper;
	switch(cOperator)
	{
	case '+':
		oper = new AddOperation();
		break;
	case '-':
		oper = new SubOperation();
		break;
	default:
		oper = new AddOperation();
		break;
	}
	return oper;
}

int _tmain(int argc, _TCHAR * argv [])
{
         int a, b;
         cin >> a >> b;
         COperation * op = CCaculatorFactory::Create('-');
         op->m_nFirst = a;
         op->m_nSecond = b;
         cout << op->GetResult() << endl;
         return 0;
}


 
 
 
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/LightUpHeaven/article/details/38823067

智能推荐

《代码整洁之道》第1章:整洁代码——学习笔记_超级大洋葱806的博客-程序员秘密

不要认为代码会消失,代码永存!!糟糕的代码可以毁掉公司;混乱的代码影响生产力;保持代码整洁,不但有关效率,还有关生存;混乱无助于赶上期限,赶上期限的唯一方法——尽可能保持代码整洁;编写整洁代码的程序员就像是艺术家;简单代码重要顺序:能通过所有测试没有重复代码体现系统中的全部设计理念包括尽量少的实体,比如类、方法、函数等有意义的命名是体现表达力的一种方式;童子军军规光把代码写好可不够,必须时时保持代码整洁;如果每次签入代码时,代码都比签出时干净,那么代.

【总结】lucas 定理 + 中国剩余定理_slowlight93的博客-程序员秘密

先上学习资料: Lucas’ Theorem 中国剩余定理 Chinese Remainder Theorem 组合数取模 - ACdreamerlucas 定理用来计算组合数模素数。如果素数P可以先确定,则可以O(P)O(P)预处理,每次计算时间复杂度为 O(logPlogN)O(logPlogN)。不预处理的时间复杂度,O(PlogN)O(PlogN)。中国剩余定理用来解模方程组 其

elementUI的级联选择器el-cascader去动态更改disabeld,遇到数据不及时更新的问题_el-cascader disable_vicky_minmin的博客-程序员秘密

elementUI的级联选择器el-cascader去动态更改disabeld,遇到数据不及时更新的问题问题:  1,项目开发过程中,使用场景是一个接口,返回的数据在主办部门和协办部门的级联选择器中展示。选择主办部门的任一项后,协办部门不能再选择,即(disabled = true)  但是在选择了主办部门,用主办部门的change事件打印出来数组,协办部门中的disabled都是正常赋值上去,同时主办部门也默认赋值了disabled属性  2,解决了上一个问题后,在主办部门下拉事件完成选择任一个值

ECharts 示例——双Y轴(一)_echarts双y轴_D_jing20的博客-程序员秘密

在使用echarts中,我们经常会用到双y轴去展示数据,有时候,我们可能需要自己去设置,具体使用某一个y轴去展示某一个具体的数据。

主成分分析 python, sklearn_python主成分分析sklearn_心态与习惯的博客-程序员秘密

六月份似乎太忙,将近一个月没有写博客,于是挑一个多元统计分析中的方法写一篇 python 操作实现的。主成分分析(Principle Component Analysis, PCA)是数据降维的一个方法:原始的统计数据中有很多变量,可以采用主成分分析方法将原始数据降维为少数几个变量的数据。主成分分析的求解一般采用特征根分解,即求解原始数据协方差矩阵或相关系数矩阵最大特征根对应的特征向量,即为第一主成分,第二主成分为第二大特征根对应的特征向量,其他的主成分可以依次得出。主成分贡献率为对应特征根占所有特征根

随便推点

遍历文件夹的三种方法_简述对目录下的文件遍历的3种方式_EvansYN的博客-程序员秘密

遍历文件夹的三种方法实例直接进入正题,第一种方法:递归法 public static void test(File file) { File[] list = file.listFiles(); for (File file2 : list) { if (file2.isDirectory()) { ...

Niushop 货到付款地区设置_chiyouchan7161的博客-程序员秘密

货到付款地区设置 货到付款地区设置 1)商家在后台设置-&gt;配送管理-&gt;物流配送-&gt;货到付款地区,设置需要货到付款的地区 2)然后在后台设置-&gt;交易设置-&gt;购物设置,开启货到付款设置。 3)买家在前台下单,主要买家的地址要和后台设置的货到付款地区...

ShellExecute用法种种 _shellexcute closehandle_mycaibo的博客-程序员秘密

Q: 如何打开一个应用程序?<br />ShellExecute(this->m_hWnd,”open”,”calc.exe”,”",”", SW_SHOW );或 ShellExecute(this->m_hWnd,”open”,”notepad.exe”,”c://MyLog.log”,”",SW_SHOW );正如您所看到的,我并没有传递程序的完整路径。Q: 如何打开一个同系统程序相关连的文档?ShellExecute(this->m_hWnd,”open”,”c://abc.txt”,”",”",S

logistic回归分析优点_Logistic回归——回归系数_weixin_39639260的博客-程序员秘密

回顾:当logistic回归模型能够较好地拟合数据时,我们便可以对模型的系数进行解释了,类似于线性回归系数。Logistic回归系数也可以被解释为对应自变量一个单位的变化所导致的因变量上的变化。在logistic回归系列(二)中,我们把logistic回归因变量转化成了比数对数后进行回归,简化了预测问题,有利于描述整个步骤背后的逻辑。然而,对于更常见的非线性所做的转化来说,自变量在logistic...

【集成学习】Stacking_BlackMan_阿伟的博客-程序员秘密

Stacking也是机器学习的一种方法,他和Boost和Bagging的区别是集成的基学习器是异质的,其目的是学习到每个基学习器的优点,然后更好的去做分类或者回归任务。首先来说它是一个层级的集成学习方法,一般情况下分为两层,利用基学习器学习特征,然后把基学习器的预测值作为第二层的输入,在训练。这样做的目的是为了给第一层预测的结果分配不同的权重,这样让每个基学习器都有其侧重点,充分的利用了每个基学习器的特点。1、Stacking种的数据如何划分? 将原本的数据集一般进行N折交叉验证 取

推荐文章

热门文章

相关标签