简单工厂模式属于创建型模式又叫做静态工厂方法模式,它属于类创建型模式。
在简单工厂模式中,可以根据参数的不同返回不同类的实例。
简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
代码如下:
// 参考大话设计模式
#include <iostream>
using namespace std;
// base
class Operation {
public:
virtual int GetResult() {
int result = 0;
return result;
}
public:
int first_num_ = 0;
int second_num_ = 0;
};
// plus
class PlusOperation :public Operation {
public:
virtual int GetResult() {
return first_num_ + second_num_;
}
};
// Sub
class SubOperation :public Operation {
public:
virtual int GetResult() {
return first_num_ - second_num_;
}
};
// simple factory
class SimpleFactory {
public:
static Operation* CreateFactory(char sign);
};
Operation* SimpleFactory::CreateFactory(char sign) {
Operation* oper_ret = nullptr;
switch (sign)
{
case '+':
oper_ret = new PlusOperation();
break;
case '-':
oper_ret = new SubOperation();
break;
default:
// do nothing
break;
}
return oper_ret;
}
int main()
{
std::cout << "Hello Simple Factory!\n";
int first_num = 0;
int second_num = 0;
cin >> first_num >> second_num;
char sign;
cin >> sign;
Operation* op = SimpleFactory::CreateFactory(sign);
op->first_num_ = first_num;
op->second_num_ = second_num;
cout << op->GetResult() << endl;
return 0;
}
github源码路径:https://github.com/dangwei-90/Design-Mode
持续更新中