本次介绍简单工厂模式,以设计一个简单的计算机为例.
如果只是在主函数中实现功能,那么完全是面向过程的思想,即旨在解决问题,而没有使用面向对象的思想。输入输出和处理的代码不应放在一个函数中,这样代码的复用性不强。代码如下:
#include<iostream>
using namespace std;
int main()
{
double num1, num2, result;
char operation;
cin >> num1;
cin >> operation;
cin >> num2;
switch (operation)
{
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1*num2;
break;
case'/':
{
if (num2 == 0)
{
cout << "除数为零" << endl;;
return 0;
}
else
result = num1 / num2;
break;
}
}
cout << result<<endl;
return 0;
}
那么,应该怎么用面向对象的思想解决这个问题呢,要考虑到封装,继承,多态。定义一个 Operation类,然后OperationAdd(+)、OperationSub(-)等继承于Operation,最后再用一个简单的工厂类确定选择的是哪个子类,例如:
COpration* COperationFactory::createOperation(char operation)
{
COpration* oper = NULL;
switch (operation)
{
case '+':
oper = new COperationAdd();
break;
case '-':
oper = new COperationSub();
break;
}
return oper;
}