简单工厂模式(四则运算)C++
时间: 2023-06-21 15:08:52 浏览: 58
简单工厂模式是一种创建型设计模式,它提供了一个创建对象的接口,但是由工厂类决定要实例化的类是哪一个。在简单工厂模式中,我们创建一个工厂类,根据传入的参数来决定创建哪一类产品的实例。
下面是一个简单的四则运算的例子:
首先,我们定义一个抽象基类 `Operation`,用于表示所有四则运算的基本操作:
```cpp
class Operation
{
public:
virtual double getResult() = 0;
double m_numberA;
double m_numberB;
};
```
然后,我们定义加法、减法、乘法、除法等具体的操作类,它们都继承自 `Operation` 并实现 `getResult()` 函数:
```cpp
class AddOperation : public Operation
{
public:
double getResult()
{
return m_numberA + m_numberB;
}
};
class SubOperation : public Operation
{
public:
double getResult()
{
return m_numberA - m_numberB;
}
};
class MulOperation : public Operation
{
public:
double getResult()
{
return m_numberA * m_numberB;
}
};
class DivOperation : public Operation
{
public:
double getResult()
{
if (m_numberB == 0)
{
throw "除数不能为0";
}
return m_numberA / m_numberB;
}
};
```
接下来,我们定义一个工厂类 `OperationFactory`,它根据传入的参数来创建相应的操作实例:
```cpp
class OperationFactory
{
public:
static Operation* createOperation(char operate)
{
Operation* operation = nullptr;
switch (operate)
{
case '+':
operation = new AddOperation();
break;
case '-':
operation = new SubOperation();
break;
case '*':
operation = new MulOperation();
break;
case '/':
operation = new DivOperation();
break;
}
return operation;
}
};
```
最后,我们可以使用如下代码来进行测试:
```cpp
int main()
{
double a = 10.0, b = 5.0;
char operate = '+';
Operation* operation = OperationFactory::createOperation(operate);
operation->m_numberA = a;
operation->m_numberB = b;
double result = operation->getResult();
cout << a << operate << b << "=" << result << endl;
delete operation;
return 0;
}
```
输出结果为:
```
10+5=15
```
这就是简单工厂模式的基本思路和实现。