简单工厂模式就是由一个对象决定创建出哪一种产品的实例,下面来一段简单工厂模式的代码。
#include <iostream>
#include <string>
using namespace std;
class Operation
{
public:
void SetNumA(double value)
{
numA = value;
}
void SetNumB(double value)
{
numB = value;
}
double GetNumA(void)
{
return numA;
}
double GetNumB(void)
{
return numB;
}
virtual double GetResult()
{
double result = 0;
return result;
}
private:
double numA;
double numB;
};
class Add : public Operation
{
public:
double GetResult()
{
double result = 0;
result = Operation::GetNumA() + Operation::GetNumB();
return result;
}
};
class Sub:public Operation
{
public:
double GetResult()
{
double result = 0;
result = Operation::GetNumA() - Operation::GetNumB();//63
return result;
}
};
class OperationFactory
{
public:
Operation *createOperation(char operate)
{
Operation *oper = NULL; //74
switch(operate)
{
case '+':
oper = new Add();
break;
case '-':
oper = new Sub();
break;
}
return oper;
}
};
int main()
{
Operation *oper = NULL;
OperationFactory Factory;
oper = Factory.createOperation('-');
oper->SetNumA(1);
oper->SetNumB(2);
double result = oper->GetResult();
cout << result << endl;
return 0;
}
上述代码实现了一个简单的计算功能,通过你输入的'+'或'-'来创建不同的类型,进而实现的不同的功能。加法类和减法类的实例都是由工厂创建的。
简单工厂模式的优点:降低了用户代码和目标代码之间的耦合性。因为我们只需要通过符号就能获得对应类的实例,避免了直接实例化;
简单工厂模式的缺点:要增加新类型需要修改工厂类
使用场景:工厂类负责创建的对象比较少,客户对应如何创建对象漠不关心
参考资料:大话设计模式
参考地址:https://blog.csdn.net/K346K346/article/details/58651682